
Docker已成为现代软件开发和运维的核心工具,无论是部署微服务、构建CI/CD流水线,还是进行线上问题排查,熟练使用Docker命令都是必备技能。
本文将系统梳理从基础到进阶的常用Docker命令,涵盖镜像、容器、网络、数据卷及系统管理等方面。内容基于Docker最新稳定版本,旨在为日常开发与运维工作提供一份高效的速查指南。

1. 环境与信息查询命令
这些命令用于检查Docker服务状态与系统资源占用,是日常运维的“第一道检查”。
| 命令 |
主要功能说明 |
docker version |
查看Docker客户端与服务端的版本信息 |
docker info |
显示详细的Docker系统信息,包括驱动、镜像数等 |
docker system df |
查看Docker的磁盘使用情况(镜像、容器、卷等) |
典型应用场景:
- 服务器磁盘告警:首先执行
docker system df -v,查看具体是镜像、容器还是数据卷占用了大量空间。
- 新环境验证:安装Docker后,使用
docker version 和 docker info 确认版本正确且存储驱动为推荐的overlay2。
2. 镜像管理命令
镜像作为容器的基础,其拉取、构建、推送和清理是高频操作。
| 命令 |
主要功能说明 |
docker search |
在Docker Hub或私有仓库中搜索镜像 |
docker pull |
从仓库拉取(下载)指定镜像 |
docker images |
列出本地已下载的镜像 |
docker build |
依据Dockerfile构建新的镜像 |
docker rmi |
删除一个或多个本地镜像 |
docker tag |
为镜像创建一个新的标签(常用于推送前) |
docker push |
将镜像推送至远程仓库 |
docker save / load |
将镜像导出/导入为tar归档文件(用于离线迁移) |
docker history |
查看镜像的构建历史(各层信息) |
docker inspect |
获取镜像的底层详细信息 |
典型应用场景:
- 生产环境版本更新:
docker build -t myapp:v2.1 . → docker tag myapp:v2.1 registry.com/myapp:v2.1 → docker push registry.com/myapp:v2.1
- 镜像瘦身分析:通过
docker history myapp:v2.1 找出导致镜像体积过大的构建层,进而优化Dockerfile。
- 离线环境部署:在可联网环境执行
docker save -o myapp.tar myapp:v2.1,在离线环境通过 docker load -i myapp.tar 导入。
3. 容器生命周期管理命令
涉及容器的创建、启动、停止与删除,是操作容器的核心命令集。
| 命令 |
主要功能说明 |
docker run |
创建并启动一个新容器(最常用) |
docker create |
仅创建容器但不启动 |
docker start / stop / restart |
启动/停止/重启一个或多个容器 |
docker kill |
强制终止容器进程(stop无效时使用) |
docker rm |
删除一个或多个(已停止的)容器 |
docker pause / unpause |
暂停/恢复容器内的所有进程 |
典型应用场景:
- 快速启动Web服务:
docker run -d --name web -p 80:80 --restart=always nginx:1.25
- 服务异常处理:先尝试
docker stop web 优雅停止;若无效,使用 docker kill web 强制终止;最后 docker rm web 清理容器后重新启动。
- 批量操作容器:重启所有运行中的容器:
docker restart $(docker ps -q)
4. 容器运维与调试命令
这些命令用于容器运行时的状态查看、日志排查和交互调试,占据了日常运维的大部分时间。
| 命令 |
主要功能说明 |
docker ps |
列出容器(默认仅运行中,加 -a 显示所有) |
docker exec |
在正在运行的容器中执行命令 |
docker logs |
获取容器的日志输出 |
docker top |
查看容器内运行的进程信息 |
docker stats |
实时显示所有容器的资源使用统计(CPU、内存等) |
docker inspect |
获取容器的底层详细信息(配置、网络、状态等) |
docker cp |
在宿主机和容器之间拷贝文件或目录 |
docker attach |
附加到容器的前台标准输入/输出(慎用,退出可能导致容器停止) |
docker commit |
基于当前容器状态创建一个新的镜像(通常用于调试,不推荐用于构建) |
docker export / import |
导出容器的文件系统为tar包 / 将tar包导入为镜像 |
典型应用场景:
- 进入容器调试:
docker exec -it web bash(或 /bin/sh)
- 排查应用日志:
docker logs -f --tail=200 web 实时跟踪并只显示最后200行日志。
- 定位资源瓶颈:
docker stats 快速查看哪个容器CPU或内存异常,然后 docker top <容器名> 深入查看其内部进程。
- 紧急备份配置:
docker cp web:/app/config.yaml ./backup.yaml 将容器内配置文件拷贝至宿主机。
5. 网络管理命令
在微服务架构中,合理的网络规划与管理是实现服务发现和隔离的关键。
| 命令 |
主要功能说明 |
docker network ls |
列出所有Docker网络 |
docker network create |
创建一个新的自定义网络 |
docker network inspect |
查看指定网络的详细信息(如连接的容器、子网) |
docker network connect |
将某个已运行的容器连接到指定网络 |
典型应用场景:
- 创建服务专用网络:
docker network create mynet
- 在自定义网络中启动服务:
docker run -d --name app1 --network mynet myapp:latest
- 为现有容器添加网络:
docker network connect mynet app2,此后app1与app2即可直接通过容器名app1、app2相互通信,这正是微服务、搞CI/CD等场景中服务发现的常见做法。
6. 数据卷管理命令
数据卷(Volume)用于持久化容器产生的数据,是运行数据库等有状态服务的基石。
| 命令 |
主要功能说明 |
docker volume ls |
列出所有数据卷 |
docker volume create |
创建一个具名数据卷 |
docker volume prune |
删除所有未被任何容器引用的数据卷 |
典型应用场景:
- 运行MySQL数据库:
docker run -d --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 mysql:8
- 数据卷备份:直接备份宿主机上Docker管理的卷目录;或使用临时容器进行打包:
docker run --rm -v mysql-data:/data -v $(pwd):/backup ubuntu tar cvf /backup/mysql.tar /data
7. 系统清理命令
Docker运行会逐渐占用磁盘空间,定期清理是维持系统健康的重要环节。
| 命令 |
主要功能说明 |
docker system prune |
一键清理未被使用的镜像、容器、网络和构建缓存 |
docker image prune |
专门清理悬挂镜像(<none>:<none>) |
docker container prune |
清理所有已停止的容器 |
docker volume prune |
清理所有未被使用的数据卷 |
典型应用场景:
- 磁盘空间告急:先执行
docker system prune 进行基础清理。若需更彻底,可使用 docker system prune -a --volumes(注意:此命令会删除所有未被使用的镜像和卷,操作前请确认)。
- 设置定期清理任务:在crontab中添加任务,每周自动执行
docker system prune -f --volumes
8. 其他高级实用命令
这些命令使用频率相对较低,但在特定场景下非常有效。
| 命令 |
主要功能说明 |
docker events |
实时获取Docker守护进程产生的事件流(如容器创建、销毁、OOM等) |
docker update |
动态更新运行中容器的配置(如CPU/内存限制) |
典型应用场景:
- 临时调整容器资源:发现某个容器CPU占用过高,可临时限制其使用核心数:
docker update --cpus=2 web
- 事件监控与审计:通过
docker events --since '2025-12-01' 查看指定时间后的Docker事件,辅助排查复杂问题。

熟练掌握以上命令,能显著提升容器化应用的开发与运维效率。随着云原生技术的普及,Docker作为基石工具,其重要性将愈发凸显。建议结合实际操作,将这份指南作为日常工作的速查手册。
|