本文旨在汇总和深入解析日常工作与学习中频繁接触到的Docker核心命令,通过实例演示来巩固记忆,以便读者在实际操作中迅速查阅和高效运用。Docker作为一种轻量级容器技术,已经成为现代应用部署与管理的重要工具。本文将涵盖从基本的Docker环境初始化、镜像与容器生命周期管理,到网络配置、数据卷维护、以及与Docker Compose等高级功能的集成使用。
系统环境
- centos7
- docker-ce 25.0.4
查看docker镜像
命令语句
docker images
可选参数
-
-a, --all
: 显示所有镜像。 -
-q, --quiet
: 只显示镜像ID,而不是详细信息,适合在脚本中使用,获取镜像ID列表。 -
-f, --filter
: 根据条件过滤镜像列表,例如按照镜像标签、仓库名、是否被标记为临时镜像等属性进行筛选。 -
[REPOSITORY[:TAG]]
: 可以指定特定的镜像仓库名及可选的标签,只显示与之匹配的镜像。如果不指定标签,则会显示该仓库下的所有镜像。 -
--digests
: 显示镜像摘要信息,对于支持摘要标识符的镜像仓库,会显示出镜像的SHA-256摘要值。 -
-no-trunc
: 不截断输出的信息,比如完整的镜像ID和仓库名。
示例
拉取docker镜像
命令语句
docker pull mysql
可选参数
-
-a, --all-tags
: 下载指定镜像仓库的所有标签版本,而非默认的单个最新标签(通常是 latest)。 -
--disable-content-trust
: 忽略镜像的校验,如果镜像仓库启用了内容信任机制,默认情况下Docker会检查镜像签名,此选项允许你暂时禁用这种安全检查。 -
--platform
: 指定要拉取镜像的平台架构(如 linux/amd64、linux/arm64 等)。 -
--label
: 当拉取镜像时添加指定的元数据标签。
示例
打包镜像
命令语句
docker save -o mysql.tar mysql:latest
可选参数
-o, --output 或 -output
: 指定导出的镜像归档文件的路径。<IMAGE> [IMAGE...]
: 指定要导出的镜像名称和可选的标签。可以同时导出多个镜像,只需将它们的名字按顺序列出来即可。
示例
删除镜像
命令语句
docker rmi mysql
可选参数
-
-f, --force 或 --force
: 强制删除镜像,即使有容器正在使用该镜像也会尝试删除。如果某个镜像有正在运行的容器基于它,通常 Docker 会拒绝删除该镜像,除非使用 --force 参数。 -
-no-prune
(较新版本的Docker可能提供): 在某些 Docker 版本中,docker image prune 命令提供了清理未被使用的镜像的功能,而 --no-prune 参数在 docker rmi 中可以阻止关联的未标记镜像( dangling images )被自动删除,但这并不是 docker rmi 命令本身的选项,而是与相关清理操作有关。
示例
加载镜像
命令语句
docker load -i mysql.tar
可选参数
-
-i, --input 或 -input
: 指定要加载的 tar 归档文件的路径 -
-q, --quiet 或 --quiet
: 简化输出信息,只显示必要的加载结果,而不打印详细的进度条和其他详细信息 -
--disable-content-trust
: (在某些 Docker 版本中可用)忽略镜像的内容信任检查。默认情况下,Docker 会验证镜像的签名,如果镜像在导出时进行了签名验证,那么加载时也会要求验证,使用此选项可以禁用这个检查。
示例
查看所有运行中的容器和状态
命令语句
docker ps
可选参数
-
-a 或 --all
: 列出所有容器,包括未运行(已停止)的容器。 -
-f 或 --filter
: 根据条件过滤列出的容器,可以指定诸如状态(running, exited)、标签(label)等条件。 -
-q 或 --quiet
: 只显示容器ID,不显示其他详细信息。 -
--latest
: 显示最近创建或启动的容器(在较新版本的Docker中可能不再支持)。 -
--no-trunc
: 不截断输出的信息,例如完整显示容器ID和映像名称。 -
-n=<整数>
: 显示最近创建的n个容器。 -
--size 或 -s:
显示容器的大小。 -
--format
: 指定返回值的模板格式,允许自定义输出样式。
示例
创建并运行容器
命令语句
docker run --name containerName -p 80:80 -d nginx
命令解读:
- docker run :创建并运行一个容器
- --name : 给容器起一个名字,比如叫做mn
- -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
- -d:后台运行容器
- nginx:镜像名称,例如nginx
可选参数
-
-d 或 --detach
: 以后台模式运行容器,并返回容器ID。容器将在后台作为守护进程运行,而不是直接连接到当前终端。 -
--name
: 为容器指定一个名称,方便后续通过名称管理容器,而不是容器ID。 -
-it 或 --interactive --tty
: 以交互模式运行容器,分配一个伪TTY,并保持STDIN打开以便与容器内的命令行进行交互。 -
-p
: 端口映射,格式为 <主机端口>:<容器端口>,如 -p 8080:80 表示将主机的8080端口映射到容器的80端口。 -
-v
: 卷挂载,将宿主机的目录挂载到容器内部,如 -v /host/path:/container/path。 -
-w
: 指定容器内的工作目录。 -
--env 或 -e
: 设置环境变量,如 -e VAR_NAME=value。 -
--entrypoint
: 覆盖默认的ENTRYPOINT指令,指定容器启动时执行的入口点。 -
--restart
: 定义容器的重启策略,如 --restart always 表示容器退出时应自动重启。 -
--net
: 设置网络模式,如 --net host 表示容器使用宿主机网络栈。 -
--gpus
: (在支持GPU的Docker版本中)指定容器使用的GPU资源,如 --gpus all 表示使用所有可用GPU。 -
--ulimit
: 设置容器的资源限制,如最大文件描述符数量。 -
--privileged
: 以特权模式运行容器,容器内的进程拥有更多的Linux权限。 -
--tmpfs
: 在容器内创建临时文件系统。 -
--ipc
: 控制容器的IPC namespace,如 --ipc=host 表示容器共享宿主机的IPC资源。 -
--security-opt
: 设置容器安全相关的选项。 -
--rm
: 容器退出时自动删除容器文件系统。 -
--volume
: 类似 -v,但更详细的卷挂载选项,可以包含额外的访问模式和其他属性。
示例
暂停容器
命令语句
docker pause nginx
可选参数
暂无