文章目录
Docker架构
镜像
定义:将应用程序及其依赖、环境、配置打包在一起。
容器
定义:镜像运行起来就是容器,一个镜像可以运行多个容器,Docker会给容器进程做隔离,对外不可见。
数据卷(容器数据管理)
定义:是一个虚拟目录,指向宿主机文件系统中的某个目录。
Docker结构
-
服务端:接收命令或远程请求,操作镜像或容器
-
客户端:发送命令或者请求到Docker服务端
DockerHub
- 一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry
Docker的基本操作
启动Docker
通过命令启动docker:
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
镜像操作
- 拉取镜像
docker pull [镜像名称]:[镜像版本号(latest)]
- 查看镜像
docker images
- 保存镜像
docker save -o [保存的目标文件名称] [镜像名称]:[镜像版本号(latest)]
- 删除镜像
docker rmi [镜像名称]:[镜像版本号(latest)]
- 加载镜像
docker load -i [要加载的目标文件名称]
- 设置镜像标签
docker tag [镜像ID] [镜像名]:[标签名]
容器操作
容器操作的命令如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0BoUia1D-1688825352447)(assets/image-20210731161950495.png)]
容器保护三个状态:
- 运行:进程正常运行
- 暂停:进程暂停,CPU不再运行,并不释放内存
- 停止:进程终止,回收进程占用的内存、CPU等资源
- 查看容器
docker ps [-a]
-
-a : 包括已经停止的所有容器
- 创建并运行容器
docker run --name [容器名] -p [宿主机端口]:[容器端口] -d [镜像名称]
- –name : 给容器起一个名字
- -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口,一般情况下两个端口都一样
- -d:后台运行容器
- nginx:镜像名称
- 启动已停止运行的容器
docker start [容器ID]
- 停止容器
docker stop [容器ID]
- 暂停正在运行的容器
docker pause [容器ID]
- 恢复运行正在暂停的容器
docker unpause
- 删除容器
docker rm [-f]
- 默认不能删除正在运行的容器
- -f : 删除正在运行的容器
- 进入容器
docker exec -it [容器名称] [bash]
- -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
- bash:进入容器后执行的命令,bash是一个linux终端交互命令
- 查看容器日志
docker logs [-f]
- -f : 持续查看日志
数据卷操作命令
基本语法
数据卷操作的基本语法如下:
docker volume [COMMAND]
docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:
- create:创建数据卷
- ls:查看所有数据卷
- inspect:查看数据卷详细信息,包括关联的宿主机目录位置
- rm:删除指定数据卷
- prune:删除所有未使用的数据卷
- 创建数据卷
docker volume create [数据卷名称]
- 查看所有数据卷
docker volume ls
- 查看数据卷详细信息
docker volume inspect [数据卷名称]
- 删除指定数据卷
docker volume rm [数据卷名称]
- 删除所有未使用的数据卷
docker volume prune
挂载数据卷
命令格式如下:
docker run \
--name [容器名] \
-v [数据卷名称]:[容器内目录] \
-p [宿主机端口]:[容器端口]
[镜像名] \
这里的-v就是挂载数据卷的命令:
- -v :把数据卷挂载到容器内的目录中
自定义镜像
Dockerfile语法
- 删除所有未使用的数据卷
docker volume prune
挂载数据卷
命令格式如下:
docker run \
--name [容器名] \
-v [数据卷名称]:[容器内目录] \
-p [宿主机端口]:[容器端口]
[镜像名] \
这里的-v就是挂载数据卷的命令:
- -v :把数据卷挂载到容器内的目录中