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文件管理多个容器,会自动创建子网