Docker 命令结构概览
所有 Docker 命令都遵循一个基本结构:
docker [选项] [子命令] [参数] [选项]
- 选项: 作用于
docker 主命令,如 -H 指定 Docker 守护进程的地址。
- 子命令: 执行的具体操作,如
run, ps, images。
- 参数: 作用于子命令,如
-d (后台运行), -p (端口映射)。
镜像 命令
镜像是一个只读的模板,用于创建容器。
| 命令 |
常用参数 |
说明 |
docker images |
-a (all), -q (quiet, 只显示ID) |
列出本地所有镜像。 |
docker pull |
<镜像名>:<标签> |
从仓库拉取一个镜像。docker pull nginx:latest |
docker push |
<镜像名>:<标签> |
将本地的镜像推送到仓库。 |
docker search |
<关键词> |
在 Docker Hub 上搜索官方镜像。 |
docker rmi |
-f (force), <镜像名> 或 <镜像ID> |
删除一个或多个本地镜像。docker rmi nginx:latest |
docker build |
-t <镜像名>:<标签>, -f <Dockerfile路径>, |
根据 Dockerfile 构建镜像。 表示在当前目录下寻找 Dockerfile。 |
docker save |
-o <文件名>.tar <镜像名>:<标签> |
将镜像保存为归档文件。 |
docker load |
-i <文件名>.tar |
从归档文件中加载镜像。 |
docker history |
<镜像名> |
查看镜像的历史构建层。 |
容器 命令
容器是镜像的运行实例。
容器生命周期管理
| 命令 |
常用参数 |
说明 |
docker run |
(极其重要,参数最多) |
创建并启动一个新的容器。 |
docker start |
<容器ID或名> |
启动一个已停止的容器。 |
docker stop |
<容器ID或名> |
停止一个正在运行的容器。 |
docker restart |
<容器ID或名> |
重启一个容器。 |
docker kill |
<容器ID或名> |
强制停止一个容器。 |
docker rm |
-f (force), <容器ID或名> |
删除一个或多个已停止的容器。 |
docker pause |
<容器ID或名> |
暂停容器内所有进程。 |
docker unpause |
<容器ID或名> |
恢复容器内所有进程。 |
docker run 的核心参数详解
这是最常用的命令,参数组合非常灵活。
| 参数类别 |
参数 |
说明 |
| 模式 |
-d |
后台运行容器,并返回容器 ID。 |
| 名称 |
--name <自定义名称> |
为容器指定一个名称,方便管理。 |
| 端口映射 |
-p <主机端口>:<容器端口> |
将主机的端口映射到容器的端口。-p 8080:80 |
| 网络 |
--network <网络名> |
将容器连接到指定的网络。 |
| 环境变量 |
-e <KEY>=<VALUE> |
设置环境变量。-e MYSQL_ROOT_PASSWORD=123456 |
| 数据卷 |
-v <主机路径>:<容器路径> |
将主机的目录或文件挂载到容器中,实现数据持久化。-v /data/mysql:/var/lib/mysql |
| 资源限制 |
--memory <大小> |
限制容器使用的内存。--memory 512m |
|
--cpus <数量> |
限制容器使用的 CPU 核心数。--cpus 1.5 |
| 容器交互 |
-i |
保持标准输入打开,通常与 -t 一起使用。 |
|
-t |
为容器分配一个伪终端(pseudo-TTY),通常与 -i 一起使用。 |
|
--rm |
容器停止后自动删除,适合用于测试。 |
| 重新启动策略 |
--restart=always |
容器退出时总是自动重启,常用于服务类容器。 |
容器操作与查看
| 命令 |
常用参数 |
说明 |
docker ps |
-a (all), -l (latest), -q (quiet) |
列出正在运行的容器。-a 会列出所有容器(包括已停止的)。 |
docker logs |
-f (follow, 实时跟踪), --tail <行数> |
查看容器的标准输出。docker logs -f my-app |
docker exec |
-i -t, <命令> |
在正在运行的容器中执行命令。docker exec -it my-app /bin/bash |
docker inspect |
<容器ID或名> |
获取容器的底层详细信息,如 IP 地址、网络配置等。 |
docker cp |
<容器路径> <主机路径> |
在主机和容器之间复制文件/目录。 |
docker top |
<容器ID或名> |
查看容器内运行的进程。 |
docker stats |
显示实时的容器资源使用情况(CPU、内存、网络等)。 |
网络 命令
Docker 容器之间通过网络进行通信。
| 命令 |
常用参数 |
说明 |
docker network create |
--driver <驱动名>, --subnet <子网> |
创建一个自定义网络。docker network create my-net |
docker network ls |
列出所有网络。 |
|
docker network inspect |
<网络名> |
查看网络的详细信息。 |
docker network connect |
<网络名> <容器名> |
将一个已存在的容器连接到指定网络。 |
docker network disconnect |
<网络名> <容器名> |
断开容器与网络的连接。 |
docker network rm |
<网络名> |
删除一个网络。 |
数据卷 命令
数据卷用于在容器和主机之间持久化和共享数据。
| 命令 |
常用参数 |
说明 |
docker volume create |
<卷名> |
创建一个数据卷。 |
docker volume ls |
列出所有数据卷。 |
|
docker volume inspect |
<卷名> |
查看数据卷的详细信息。 |
docker volume rm |
<卷名> |
删除一个数据卷。 |
docker volume prune |
清理未被使用的数据卷。 |
|
系统信息与资源管理
| 命令 |
常用参数 |
说明 |
docker info |
显示 Docker 系统的总体信息,包括镜像、容器数量等。 |
|
docker version |
显示 Docker 客户端和服务端的版本信息。 |
|
docker system df |
显示 Docker 使用的磁盘空间(镜像、容器、本地卷等)。 |
docker system prune |
(危险操作) 清理所有未被使用的数据:已停止的容器、未被任何容器引用的网络、悬空镜像、构建缓存。 |
docker system prune -a |
(极度危险) 在 prune 的基础上,删除所有未被任何容器使用的镜像(不仅仅是悬空镜像)。 |
镜像仓库
| 命令 |
常用参数 |
说明 |
docker login |
登录到 Docker 镜像仓库。 |
|
docker logout |
登出 Docker 镜像仓库。 |
|
docker tag |
<源镜像>:<标签> <目标镜像>:<标签> |
为本地镜像创建一个新的标签,通常用于推送前重命名。docker tag my-app:latest my-registry.com/my-app:latest |
总结与建议
- 从
docker run 开始: docker run 是最核心的命令,务必熟练掌握其常用参数,特别是 -d, -p, -v, --name, -e。
- 善用
docker ps 和 docker logs: 这是排查问题最常用的两个命令,一个看容器状态,一个看日志输出。
- 理解
docker exec: 它让你能够进入一个正在运行的容器内部进行调试和操作。
docker system df 和 prune: 随着使用时间增长,Docker 会占用大量磁盘空间,定期清理是必要的习惯。
- 查阅官方文档: Docker 更新很快,遇到不熟悉的命令或参数,最权威的来源永远是 Docker 官方文档,使用
docker <command> --help 也可以查看该命令的帮助信息。