Docker 运维命令速查手册


前言

在现代微服务与云原生开发中,Docker 已经成为容器化部署的绝对核心。无论是本地打包测试、多容器联合编排,还是生产环境的存储与网络调优,熟练掌握 Docker 指令都是必备技能。本文将全套 Docker 及 Docker Compose 核心命令整理为高可读性的表格格式,方便日常极速查阅与一键复制。


一、 容器生命周期管理

用于控制容器的从无到有、启动、停止、暂停以及销毁的完整生命周期。

命令作用备注与技巧
docker run -d -p 80:80 --name web nginx创建并启动一个新的容器-d 后台运行,-p 端口映射(宿主机:容器),--name 指定容器名
docker start <container>启动一个或多个已经被停止的容器保持原有的容器配置不变
docker stop <container>优雅地停止一个正在运行的容器默认会给容器发送 SIGTERM 信号,等待程序释放资源
docker restart <container>重启容器常用于修改局部配置文件或服务卡死时复位
docker kill <container>立即强制终止一个或多个正在运行的容器相当于 Linux 的 kill -9,直接发送 SIGKILL
docker rm <container>删除一个或多个已经停止的容器如果容器正在运行,需追加 -f 才能强行删除
docker pause <container>暂停容器中的所有进程挂起容器当前状态,不占用 CPU 资源
docker unpause <container>恢复容器中所有被暂停的进程从暂停状态中唤醒容器
docker create <image>创建一个新的容器但不启动它仅准备好容器环境,返回容器 ID,后续需用 start 启动
docker exec -it <container> bash在运行中的容器内执行新命令-it 交互式终端必备;如果 bash 报错可换成 sh
docker rename <old> <new>重命名现有的容器方便规范化容器命名

二、 容器状态操作与日常运维

用于实时监控、调试、获取容器运行状态以及导出容器快照。

命令作用备注与技巧
docker ps列出当前正在运行的 Docker 容器加上 -adocker ps -a)可以查看包括已退出的全量容器
docker inspect <container>获取 Docker 对象的底层详细信息(JSON 格式)查看容器 IP、挂载卷、网络配置的“终极神技”
docker top <container>显示指定容器中正在运行的进程列表检查容器内部是否有僵尸进程或资源异常占用
docker attach <container>附加到正在运行的容器的标准输入输出流⚠️ 退出若用 Ctrl+C 会导致容器停止,建议用 exec 代替
docker events实时获取 Docker 守护进程生成的事件日志监控容器的创建、启动、销毁等动态流
docker logs -f --tail 100 <container>获取并查看容器的日志输出-f 实时滚动,--tail 100 仅看最后 100 行,排错常用
docker wait <container>阻塞执行,直到容器停止并打印其退出状态码自动化脚本中用于判断前置容器是否安全执行完毕
docker export -o my_img.tar <container>将容器的文件系统导出为一个 tar 归档文件导出的只是“冷冻”的文件系统快照,会丢失所有历史层
docker port <container>显示容器的端口映射信息快速核对容器的内部端口具体映射到了宿主机的哪个端口
docker stats实时流式显示容器的 CPU、内存、网络及磁盘 I/O 使用率Docker 版的 top 命令,性能监控首选
docker update --memory "1g" <container>动态更新 Docker 容器的资源限制无需重启容器,即可直接在线调整内存、CPU 权重

三、 容器 Root 文件系统(rootfs)操作

用于处理容器内部的文件变更、宿主机交互以及状态固化。

命令作用备注与技巧
docker commit <container> <new_image:tag>将容器当前的改动状态保存为一张新的本地镜像不推荐作为常规镜像制作手段(建议用 Dockerfile),临时保存环境有用
docker cp <local_path> <container>:<path>在容器和宿主机之间互传复制文件或目录支持双向传输,例如:docker cp ./config.json web:/etc/
docker diff <container>检查并显示容器文件系统的变更(增删改)A 代表新增,C 代表修改,D 代表删除

四、 镜像仓库(Registry)交互

用于管理本地 Docker 客户端与远端镜像中心(如 Docker Hub、阿里云、私有仓)的联邦交互。

命令作用备注与技巧
docker login <registry_url>登录到指定的 Docker 镜像仓库中心如果不加 URL,默认登录官方的 Docker Hub
docker logout <registry_url>登出指定的 Docker 镜像仓库中心清除本地保存的认证凭证安全退出
docker pull <image_name:tag>从注册表下载指定的镜像到本地缺省 tag 时默认下载 latest 最新版
docker push <image_name:tag>将本地构建好的镜像上传推送到远端仓库推送前必须保证本地镜像的标签前缀与目标仓库空间一致
docker search <keyword>在 Docker Hub 中检索搜索符合关键词的镜像寻找官方认证(Official)或高星(Stars)镜像的便捷手段

五、 本地镜像管理

用于本地镜像的查看、构建、清理、打标签以及离线打包传输。

命令作用备注与技巧
docker images列出本地主机上存储的所有 Docker 镜像查看 IMAGE ID、创建时间和占用磁盘空间大小
docker rmi <image_id>删除不再需要的本地镜像如果镜像被容器占用,需先删容器或加 -f 强制删除镜像
docker tag <old_img> <new_img:tag>为本地镜像创建一个新的别名/标签(Tag)常用于发版版本号控制或推送私有仓前的规范重命名
docker build -t my_app:v1 .根据当前目录下的 Dockerfile 自动化构建镜像最后的 . 代表构建上下文路径,千万不要漏掉
docker history <image>查看指定镜像的历史分层信息和构建构建指令了解镜像由哪些 Commit 或 Dockerfile 步骤叠加而成
docker save -o app.tar my_app:v1将一个或多个镜像归档打包为一个 tar 文件完整打包:包含镜像的所有历史层及元数据,适合离线分发
docker load -i app.tardocker save 生成的 tar 文件中加载镜像离线无网环境部署服务的核心命令
docker import my_snapshot.tar <name:tag>从容器快照 tar 文件中导入并创建一个新镜像load 不同,import 导入的是 export 的容器快照,历史层已被剥离

六、 系统信息查看

用于获取宿主机 Docker 引擎的全局配置、版本和健康状况。

命令作用备注与技巧
docker info显示 Docker 引擎的系统级全面信息查看当前容器总数、存储驱动类型、国内镜像源配置等
docker version显示 Docker 客户端与服务端的详细版本信息排查 API 版本不兼容或检查客户端/引擎版本时使用

七、 Docker Compose 多容器联合编排

用于一键式多服务联合部署与项目群生命周期管理。

⚠️ 运行前提:执行以下命令时,当前终端必须处于包含 docker-compose.yml 文件的项目目录下。

命令作用备注与技巧
docker compose up -d一键部署:根据编排文件创建并后台运行所有服务生产与通用开发环境最经典的启动命令,-d 释放终端
docker compose down一键销毁:停止并彻底删除所有相关的容器、网络和卷干净利落地一键清理整套项目环境
docker compose ps查看当前编排项目组下的所有容器运行状态清楚掌握多容器项目组的端口映射与运行健康度
docker compose logs -f [service_name]查看项目组整体或指定单服务的实时运行日志不加服务名则输出全部服务的混合日志
compose build重新构建项目文件中定义了 build 关键字的镜像当修改了项目的 Dockerfile 源码后,需执行此命令刷新
docker compose ls列出当前宿主机上正在运行的所有 Compose 项目组掌握全局多项目并存的宏观概况
docker compose start启动已经存在的项目组容器仅仅是拉起旧容器,不会应用 yml 文件的最新修改
docker compose restart重启项目组内的所有容器服务配置局部小改动后极速复位
docker compose rm删除已经停止的项目组关联容器清理残留容器,释放盘符空间
docker compose exec <service_name> sh快速登录进入编排文件中的某一个特定服务容器内部无需死记复杂的容器真实 ID,直接用配置的服务名即可进入

八、 网络(Network)独立管理命令

用于容器间的高级网络隔离、路由打通及跨容器通信编排。

命令作用备注与技巧
docker network ls列出当前宿主机上的所有 Docker 网络拓扑默认包含 bridge(网桥)、host(宿主机同网)、none
docker network create --driver bridge my_net手动创建一个指定驱动类型的自定义虚拟网络推荐创建自定义网桥,容器间可直接通过容器名当作域名互访
docker network rm <network_name>删除指定的自定义网络被删除的网络当前不能有任何容器处于连接状态
docker network inspect <network_name>查看网络的详细配置信息及当前挂载在旗下的容器 IP排查容器网络互通故障的利器
docker network connect my_net web将一个正在运行的容器动态接入到指定的网络中实现一台容器同时横跨两个网络,打通业务隔离链
docker network disconnect my_net web断开某个容器与指定虚拟网络的网络连接动态下线,切断网络通路

九、 数据卷(Volume)独立管理命令

用于实现容器内业务数据的持久化、规避容器销毁带来的数据丢失。

命令作用备注与技巧
docker volume ls列出当前宿主机上存储的所有匿名/具名数据卷全局掌握本地持久化卷列表
docker volume create my_db_data显式创建一个全新的具名数据卷提前创建好数据卷以便在 run -v 时直接挂载绑定
docker volume inspect my_db_data查看该数据卷在宿主机(Linux 根下)的实际真实存储路径寻找 Mountpoint 字段即可知道文件真实存在宿主机的哪里
docker volume rm my_db_data删除指定的数据卷⚠️ 极其危险,会彻底抹除持久化的业务数据,需确保无用后删除
docker volume prune清理删除所有当前未被任何容器使用的孤立匿名/具名卷磁盘空间告急时的“大扫除”指令

更多推荐