Docker 运维命令速查手册
·
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 容器 | 加上 -a(docker 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.tar | 从 docker 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 | 清理删除所有当前未被任何容器使用的孤立匿名/具名卷 | 磁盘空间告急时的“大扫除”指令 |
更多推荐


所有评论(0)