Docker的基础学习

Docker的基本使用

什么是Docker?

Docker--利用容器化技术给应用程序封装独立环境,每个运行环境都包含一个容器,运行容器的计算机被称为宿主机

与虚拟机的区别是:Docker容器之间共用一个系统内核;而每个独立的虚拟机都包含一个完整的操作系统的内核

什么是镜像?

镜像是一个只读的模板,它包含了运行应用程序所需的一切:代码、运行时、库、环境变量和配置文件

什么是镜像仓库?

镜像仓库是用于存放分享镜像的地方

  • 官方镜像仓库--Docker Hub

什么是容器?

  • 容器是镜像的运行实例,镜像是静态的,而容器是动态的,我们对容器的任何修改(如创建,启动,停止,删除)都不会影响镜像本身

什么是仓库?

  • 仓库是集中存放镜像文件的地方

Windows系统安装Docker

  • 启动Windows的功能
  • 重启电脑后,安装WSL,打开cmd以管理员身份运行,输入命令:
shell 复制代码
wsl --set-default-version 2

wsl --update --web-download
  • 安装后,去官网下载Docker Desktop
  • 下载完成后,进入到图形化页面,我们需要配置docker国内镜像源
json 复制代码
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://mirror.ccs.tencentyun.com",
    "https://docker.m.daocloud.io",
    "https://docker.imgdb.de",
    "https://docker-0.unsee.tech",
    "https://docker.hlmirror.com",
    "https://docker.1ms.run",
    "https://func.ink",
    "https://lispy.org",
    "https://docker.xiaogenban1993.com"
  ]
}

基本命令

  • 从仓库下载镜像
bash 复制代码
docker pull 镜像名
  • 修改配置文件,设置镜像站
bash 复制代码
vi 
bash 复制代码
"registry-mirrors":[
			"https://docker.m.daocloud.io",
			"https://docker.1panel.live",
			"https://hub.rat.dev"
]

重启docker

bash 复制代码
service docker restart
  • 列出所有下载过的镜像
bash 复制代码
docker images
  • 删除镜像
bash 复制代码
docker rmi 镜像名
  • 使用镜像创建并运行容器
bash 复制代码
docker run 镜像名
  • 查看进程状况(运行的容器)
bash 复制代码
docker ps
  • 让容器在后台运行,不阻塞当前窗口
bash 复制代码
docker run -d

注意:镜像如果不存在于本地仓库中,则会进行自动拉去,所以可以省略pull命令

  • 与宿主机端口进行映射
bash 复制代码
docker run -p 端口号

例如80:80,冒号前位宿主机端口,冒号后为容器端口

  • 把宿主机与容器的文件目录进行绑定,相互影响,目的是持久化保存数据
bash 复制代码
docker run -v
  • 强制删除容器
bash 复制代码
docker rm -f 容器id

卷的创建

  • 新建一个挂载卷
bash 复制代码
docker volume create 挂载卷名
  • 列出所有创建过的卷
bash 复制代码
docker volume list
  • 删除指定的挂载卷
bash 复制代码
docker volume rm 挂载卷名
  • 删除所有容器都未使用过的卷
bash 复制代码
docker volume prune -a

docker run 的其他参数

  • -e:往容器中传递环境变量
  • --name:自定义容器名,不可重复
  • -it:让控制台进入容器交互
  • -rm:容器一旦停止就删除掉
  • --restart :配置容器在停止时的重启策略
    • always:容器停止,立刻重启
    • unless-stopped:手动停止则不会重启,自动停止会重启

调试命令

  • 启动或停止一个容器
bash 复制代码
docker start/stop
  • 查看所有容器
bash 复制代码
docker ps -a
  • 查看指定容器信息
bash 复制代码
docker inspect 容器id
  • 只创建容器但不运行
bash 复制代码
docker create 容器名
  • 查看容器日志
bash 复制代码
docker logs 容器id  -f追踪输出

Docker原理

  • Cgroups:限制隔离进程的资源使用
  • Namespaces:隔离进程的资源视图
  • 如果要进行多应用的容器化部署,就需要把每一个模块都打包成一个个独立的容器,这个时候我们可以使用Docker compose,它使用yml文件管理多个容器,会自动创建子网
相关推荐
一隅论数智3 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
XiHongShi20163 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
爱吃苹果的日记本3 天前
离散数学第六课
学习·离散数学
分布式存储与RustFS3 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
AI职业加油站3 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
旖旎夜光3 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
奇思妙想聪明勤奋的小羊3 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio