zHan_docker笔记总结

54 阅读3分钟

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] [镜像名]:[标签名]

容器操作

容器操作的命令如图:

image-20210731161950495转存失败,建议直接上传图片文件

容器保护三个状态:

  • 运行:进程正常运行
  • 暂停:进程暂停,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语法

image-20210731180321133.png