开发者工具 · 命令速查

Docker 命令大全

镜像/容器/网络/卷全速查

✓本地处理 · 不上传 ✓免费 · 无需登录 ✓无次数限制 累计 136 次使用
Docker Commands · Cheatsheet
命 令 分 类镜像 · 容器 · 网络 · 卷 · 系统 · Compose · Dockerfile
命 令 全 表Gallery · 点卡片看语法 / 选项 / 场景 / 示例
点选左侧任一命令
查看 语法 / 常用选项 / 中文说明 / 典型场景 · 示例代码块 · 相关命令
常 用 组 合Combos · 几个高频运维场景速查(点命令可复制)
就绪 · 含分类速查 + 常用选项 + 中文说明 + 典型场景 + 示例 + 危险操作朱砂警示 · 全程浏览器本地
第一节

关于本工具

About

敲下 `docker run` 却忘了 `-v` 挂载路径的写法,或者 `docker network ls` 之后找不到刚建的桥接网络——这种中断查文档的瞬间,一次就能打断容器编排的节奏。这个速查表把镜像、容器、网络、卷四类命令按操作场景分组陈列,每条命令附带参数说明与典型示例,省去翻手册的时间。所有内容以静态页面呈现,不向任何服务器发送请求,离线环境同样可查。

使用场景

壹

排查容器端口冲突

部署微服务时,新启动的容器一直报 `port is already allocated`,但 `docker ps` 列表里没有同名容器。运维工程师用本工具查到被占用的端口对应一个已退出的容器,用 `docker container ls -a` 定位容器 ID,再用 `docker rm` 清理。十分钟内恢复部署,避免了逐个排查宿主机进程的繁琐操作。

贰

清理磁盘空间腾挪

CI 服务器磁盘使用率飙到 95%,构建任务全部卡住。开发人员用本工具查到 `docker system df` 显示悬空镜像和停止的容器占了 12GB。对照命令大全执行 `docker image prune -a` 和 `docker container prune`,释放空间后构建流水线恢复运行。整个过程不到 3 分钟,无需重启服务器。

叁

重建网络隔离环境

测试团队需要模拟生产环境的三个独立子网,但 `docker network create` 的参数记不全。测试工程师用本工具查到 `--subnet` 和 `--gateway` 的写法,创建了 `frontend`、`backend`、`db` 三个自定义桥接网络。随后用 `docker network connect` 将容器挂载到对应网络,半小时内复现了生产环境的网络拓扑。

肆

恢复误删的容器数据

某开发者在清理测试环境时误执行 `docker rm -f` 删除了一个运行中的数据库容器,但容器内的数据卷未删除。用本工具查到数据卷的持久化机制,通过 `docker volume ls` 找到残留卷,再用 `docker run -v` 挂载到新容器启动。数据库表结构完整恢复,避免了从备份重新导入的 40 分钟等待。

伍

调试容器内网络连通性

新部署的 API 网关容器无法访问后端的 Redis 服务,但两个容器都在同一个 compose 项目中。后端开发用本工具查到 `docker exec -it <容器名> ping <目标容器>` 的调试方法,进入网关容器后 `ping redis` 发现 DNS 解析失败。对照命令大全检查 `docker-compose.yml` 中的 `links` 配置,修正后网络恢复。

第二节

使用指南

Getting Started

使用步骤

  1. 1在搜索框输入关键词(如 `docker run` 或 `volume`),下方列表实时过滤出匹配命令,无需回车
  2. 2点击任意命令行,右侧面板展开该命令的完整语法、参数说明及典型示例,参数用表格列出
  3. 3在示例代码块上点「复制」按钮,命令文本自动写入剪贴板,可直接粘贴到终端执行
  4. 4展开「常用命令」分组,按镜像管理、容器生命周期、网络配置、数据卷分类浏览,减少翻页

输入输出示例

输入输出说明
docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES (空列表)常规:最常用的列出运行容器命令,首次使用时输出空列表,验证工具能正确解析无容器状态
docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE nginx latest f8a4ffc3a2b1 2 weeks ago 187MB ubuntu 22.04 a1b2c3d4e5f6 1 month ago 77.8MB常规:列出本地已有镜像,展示工具能解析多行多列输出,包含仓库名、标签、ID、创建时间和大小
docker run -d --name web nginxa1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6边界:run 命令返回容器长 ID(64 位十六进制),验证工具能准确截取并展示完整哈希值
docker stop $(docker ps -q)a1b2c3d4e5f6 g7h8i9j0k1l2 m3n4o5p6q7r8边界:停止所有运行容器,输出为多个容器 ID 分行显示,验证工具能处理 shell 命令组合和换行输出
docker rm -f $(docker ps -aq)a1b2c3d4e5f6 g7h8i9j0k1l2 m3n4o5p6q7r8边界:强制删除所有容器(包括停止的),输出与 stop 类似但操作更危险,验证工具能区分不同命令的语义差异
docker exec -it web sh(无输出,进入交互式 shell)易错:交互式命令在非终端环境下可能无输出或挂起,验证工具能正确处理 -it 参数并提示用户需终端环境
docker build -t myapp .Sending build context to Docker daemon 2.048kB Step 1/3 : FROM node:18-alpine ---> a1b2c3d4e5f6 Step 2/3 : WORKDIR /app ---> Running in x1y2z3a4b5c6 Removing intermediate container x1y2z3a4b5c6 ---> d1e2f3g4h5i6 Step 3/3 : COPY . . ---> Running in j1k2l3m4n5o6 Removing intermediate container j1k2l3m4n5o6 ---> e1f2g3h4i5j6 Successfully built e1f2g3h4i5j6 Successfully tagged myapp:latest易错:build 命令输出包含多步骤和中间容器 ID,验证工具能逐行解析构建日志,不遗漏 Successfully 标记
docker network lsNETWORK ID NAME DRIVER SCOPE b1c2d3e4f5g6 bridge bridge local h1i2j3k4l5m6 host host local n1o2p3q4r5s6 none null local常规:列出所有网络,展示工具能处理三列(ID、名称、驱动、作用域)的标准表格输出

常见错误对照

1.docker run 后直接跟镜像名,忽略 tag 导致拉取非预期版本

✗ 错误docker run nginx
✓ 修复docker run nginx:1.25

省略 tag 默认拉取 latest,但 latest 可能指向最新版或滚动更新版,生产环境必须指定明确版本号以保证可复现性。

2.docker exec -it 忘记 -it 导致无法交互

✗ 错误docker exec 容器ID bash
✓ 修复docker exec -it 容器ID bash

-i 保持 STDIN 打开,-t 分配伪终端,缺一不可。没有 -it 时 bash 立即退出,无法进入交互式 shell。

3.docker rm 前未停止容器,强制删除导致数据丢失

✗ 错误docker rm 容器ID
✓ 修复docker stop 容器ID && docker rm 容器ID

运行中容器无法直接删除(除非加 -f),但 -f 会发送 SIGKILL 而非 SIGTERM,跳过优雅关闭流程,可能丢失未写入磁盘的数据。

4.docker build 时用 . 作为上下文,把大文件全打包进去

✗ 错误docker build -t myapp .
✓ 修复docker build -t myapp -f Dockerfile .

构建上下文默认包含当前目录所有文件,若目录下有 node_modules、.git 等大目录,构建会极慢。必须配合 .dockerignore 排除无关文件。

5.docker run -p 映射端口时写反宿主端口和容器端口

✗ 错误docker run -p 80:8080 nginx
✓ 修复docker run -p 8080:80 nginx

-p 格式为 宿主机端口:容器端口,写反后宿主监听 80、容器内 nginx 监听 8080,实际访问宿主 80 会连接失败。

6.docker logs 不加 -f 只看一次日志,错过后续输出

✗ 错误docker logs 容器ID
✓ 修复docker logs -f 容器ID

不加 -f 只打印当前已有日志后退出,适合排查历史错误;加 -f 持续跟踪新日志,适合调试启动阶段或实时监控。

7.docker commit 替代 Dockerfile 构建镜像

✗ 错误docker commit 容器ID myimage:latest
✓ 修复编写 Dockerfile 并用 docker build 构建

docker commit 创建的是黑盒镜像,无法追溯变更、不可重复构建。官方最佳实践始终使用 Dockerfile 声明式构建。

8.docker volume prune 不加 --filter 误删所有未使用卷

✗ 错误docker volume prune
✓ 修复docker volume prune --filter label!=keep

prune 默认删除所有未被容器引用的卷,若临时停止容器后忘记标签保护,数据卷会被清除。生产环境务必用标签或手动管理。

第三节

工作原理

How It Works

核心公式

容器内存限制 = memory_limit_bytes - (kernel_overhead + cgroup_overhead)

变量说明

  • memory_limit_bytesdocker run --memory 设定的字节数
  • kernel_overhead内核保留内存,约 64 MB
  • cgroup_overheadcgroup 管理开销,约 5% 总限制

示例

设 --memory=512m(即 536870912 字节),kernel_overhead=64×1024×1024=67108864,cgroup_overhead=536870912×0.05=26843546,则容器可用内存=536870912-67108864-26843546=442948502 字节≈422.5 MB。

输入命令docker pull / run / build解析与分类镜像 / 容器 / 网络 / 卷+ 参数校验本地查表匹配语法 / 选项+ 示例说明输出:命令格式 + 常用选项 + 示例docker run -d --name mynginx -p 8080:80 nginx:latest
用户输入 本地处理 查表匹配 输出结果
第五节

常见问题

Q & A
问docker ps 和 docker container ls 到底有什么区别,用哪个都行吗?+
答

完全等价,docker ps 是旧式命令,docker container ls 是新的子命令风格。本工具手册两者都收录,实际用哪个取决于习惯。在 Docker 1.13+ 中,官方推荐子命令结构(docker container / image / network / volume),但老用户仍常用 docker ps。如果脚本里用 docker ps 更短,但 docker container ls 在自动补全和帮助提示上更友好,没有功能差异。

问我删不掉一个镜像,提示 image is being used by running container 怎么办?+
答

说明有容器正在用这个镜像,先停掉容器再删。步骤:docker ps -a 找到对应容器的 CONTAINER ID,然后 docker rm -f <ID> 强制删除容器,最后 docker rmi <IMAGE_ID> 删镜像。如果容器已停止但还在,直接 docker rm 再 rmi 即可。本工具也收录了 docker system prune -a 这条清理命令,可以一键清除所有未使用的镜像、容器、网络和卷。

问docker run -d 启动容器后,怎么看它有没有正常运行?+
答

用 docker ps 查看正在运行的容器列表,如果容器不在列表里,说明启动后立即退出了。此时用 docker logs <CONTAINER_ID> 看日志输出,常见原因是前台进程未保持运行(比如启动 nginx 但没加 daemon off)。用 docker inspect <ID> 可以看退出码和状态详情。本工具的常用命令部分也包含了 docker logs -f 实时跟踪日志的用法。

问docker exec 进容器后,怎么退出又不让容器停止?+
答

按 Ctrl + D 或输入 exit 退出。这只会退出 exec 创建的 shell 进程,不会影响容器主进程。如果容器启动时用的是交互模式(docker run -it),直接 exit 会让容器也停止,因为主进程(bash)结束了。本工具在 exec 命令说明里特别标注了:-it 参数用于交互式执行,退出不影响容器,除非 exec 的是主进程。

问docker-compose up 和 docker run 什么关系,为什么有时候用 compose 更方便?+
答

docker-compose 是 docker run 的编排封装,用 YAML 文件定义多个容器、网络、卷的配置,一次启动全部。当项目需要多个服务(如 web + db + redis)时,用 docker run 要写很多条命令,而 docker-compose up 一条搞定。本工具也收录了 docker-compose 的常用命令(up、down、logs、ps),适合多容器场景速查。

问为什么我 docker pull 下来的镜像和 Docker Hub 上看到的层数不一样?+
答

Docker Hub 显示的是镜像的完整层数,而 pull 时如果本地已有某些层(比如基础镜像的层),则只会下载缺失的层,所以显示的下载层数可能比 Hub 上少。另外 manifest list(多架构镜像)在 pull 时会根据你的 CPU 架构选择对应的镜像,层数也可能不同。用 docker history <IMAGE> 可以看到本地镜像的实际层结构。

问docker volume 和 bind mount 到底选哪个,哪个性能好?+
答

性能上 bind mount 略好(直接映射宿主机文件系统),但 volume 由 Docker 管理,跨平台兼容性更好,支持卷驱动(如 NFS、云存储)。生产环境优先用 volume,因为备份、迁移方便;开发调试用 bind mount 可以实时修改代码。本工具在卷管理部分列出了 docker volume create / inspect / prune 等命令,并给出了两者的适用场景说明。

问docker network 里 bridge、host、none 三种模式到底怎么选?+
答

bridge(默认)是隔离的虚拟网络,容器间通过 IP 通信,适合单机多容器场景。host 模式容器直接使用宿主机网络栈,性能最好但无隔离,适合需要高吞吐的网络服务(如 nginx)。none 模式没有网络,适合安全敏感的离线任务。本工具的网络命令部分详细列出了 docker network create / connect / disconnect 的用法,并给出了每种模式的典型场景。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

↑↓选择 ↵打开 ⌘+↵新窗口 esc关闭