目录
Docker 命令大全(速查表)
本页整理了日常最常用的 Docker 命令,以 Docker 29 为准。每条命令的详细说明与实际输出,请点击各章节的链接。最后一节整理了本教程实测时发现的常见陷阱。
容器
| 命令 | 说明 |
|---|---|
docker run -d --name web -p 8080:80 nginx:1.30 | 在后台运行容器并映射端口 |
docker run -it --rm ubuntu:26.04 bash | 以交互模式运行,退出后自动删除 |
docker ps | 列出正在运行的容器 |
docker ps -a | 列出所有容器 |
docker stop web | 停止容器 |
docker start web | 启动已停止的容器 |
docker restart web | 重启容器 |
docker rm web | 删除已停止的容器 |
docker rm -f web | 强制删除正在运行的容器 |
docker logs -f web | 跟踪容器日志 |
docker logs --tail 100 web | 查看最后 100 行日志 |
docker exec -it web sh | 进入容器的 shell |
docker cp web:/path/file . | 将文件从容器复制到主机 |
docker inspect web | 查看容器详细信息 |
docker stats | 实时查看资源使用情况 |
docker top web | 查看容器内的进程 |
docker port web | 查看端口映射 |
docker update --restart unless-stopped web | 修改重启策略 |
docker run --init ... | 使用轻量级 init 作为 PID 1,正确转发停止信号 |
延伸阅读:docker run 参数、容器生命周期、查看日志与调试
镜像
| 命令 | 说明 |
|---|---|
docker images | 列出本地镜像 |
docker images --tree | 显示多平台镜像所包含的平台 |
docker pull nginx:1.30 | 下载镜像 |
docker tag myapp user/myapp:1.0 | 添加新名称/标签 |
docker push user/myapp:1.0 | 推送到 Registry |
docker rmi nginx:1.30 | 删除镜像 |
docker history nginx:1.30 | 查看分层信息 |
docker buildx imagetools inspect nginx:1.30-alpine | 查看远程镜像支持的平台 |
docker save -o img.tar myapp | 导出为文件 |
docker load -i img.tar | 从文件导入 |
docker login / docker logout | 登录 / 登出 Registry |
延伸阅读:镜像、推送到 Docker Hub
构建
| 命令 | 说明 |
|---|---|
docker build -t myapp . | 使用当前文件夹中的 Dockerfile 构建 |
docker build -f Dockerfile.prod -t myapp . | 指定 Dockerfile |
docker build --no-cache -t myapp . | 不使用缓存 |
docker build --pull -t myapp . | 重新拉取基础镜像 |
docker build --target dev -t myapp:dev . | 只构建到指定阶段 |
docker build --build-arg VERSION=1.2 . | 传入构建参数(不要用来传递密码) |
docker build --secret id=token,env=TOKEN . | 传入构建所需的机密,不会留在镜像中 |
docker build --progress plain . | 显示完整的构建输出 |
docker buildx build --platform linux/amd64,linux/arm64 -t user/app --push . | 构建多平台镜像并推送 |
延伸阅读:Dockerfile 命令大全、构建缓存与优化、多阶段构建、多平台镜像
Volume
| 命令 | 说明 |
|---|---|
docker volume create data | 创建 Volume |
docker volume ls | 列出 Volume |
docker volume inspect data | 查看详细信息 |
docker volume rm data | 删除 Volume |
docker run -v data:/app/data myapp | 挂载命名 Volume |
docker run -v "$(pwd):/app" myapp | 挂载当前文件夹 |
延伸阅读:Volume 与数据持久化
网络
| 命令 | 说明 |
|---|---|
docker network create appnet | 创建自定义网络 |
docker network ls | 列出网络 |
docker network inspect appnet | 查看网络中的容器 |
docker run --network appnet --name db postgres:18 | 让容器加入网络 |
docker network connect appnet web | 将正在运行的容器加入网络 |
docker network rm appnet | 删除网络 |
延伸阅读:网络与容器互连
Docker Compose
| 命令 | 说明 |
|---|---|
docker compose up -d | 在后台启动所有服务 |
docker compose up -d --build | 重新构建后启动 |
docker compose up -d --wait | 等所有服务都 healthy 后再返回 |
docker compose up -d app | 只更新/重建某个服务 |
docker compose down | 停止并删除容器与网络 |
docker compose down -v | 同时删除 Volume |
docker compose ps | 查看服务状态 |
docker compose logs -f app | 跟踪某个服务的日志 |
docker compose exec app sh | 进入服务容器 |
docker compose run --rm app npm test | 执行一次性命令 |
docker compose pull | 下载最新镜像 |
docker compose restart app | 重启服务(不会应用已修改的配置) |
docker compose watch | 文件变更时自动同步或重建(用于开发) |
docker compose --profile tools up -d | 同时启动 profile 中的服务 |
docker compose config | 检查最终配置 |
延伸阅读:Docker Compose 入门、docker compose 命令
清理
| 命令 | 说明 |
|---|---|
docker system df | 查看空间使用情况 |
docker container prune | 删除已停止的容器 |
docker image prune -a | 删除未使用的镜像 |
docker builder prune | 清除构建缓存 |
docker builder prune --filter until=168h | 只清除 7 天以上未使用的构建缓存 |
docker volume prune | 删除未使用的匿名 Volume |
docker volume prune -a | 删除所有未使用的 Volume,包括命名数据库数据 |
docker system prune | 综合清理(不包括 Volume) |
docker system prune --volumes | 综合清理,并清除匿名 Volume(从 Docker 23 起不包括命名 Volume) |
延伸阅读:清理硬盘空间
系统信息
| 命令 | 说明 |
|---|---|
docker version | 客户端与服务器版本 |
docker info | Docker 系统信息 |
docker events | 实时事件 |
docker context ls | 列出可连接的 Docker 环境 |
常用参数速记
| 参数 | 含义 |
|---|---|
-d | 在后台运行 |
-it | 交互模式 + 终端 |
-p 主机:容器 | 端口映射 |
-v 来源:容器路径 | 挂载 |
-e KEY=VALUE | 环境变量 |
--name | 容器名称 |
--rm | 退出后自动删除 |
--network | 指定网络 |
--restart | 重启策略 |
-f | 强制(rm、rmi)或跟踪(logs) |
常见陷阱(本教程实测)
| 现象 | 原因与解决方法 | 章节 |
|---|---|---|
docker stop 要等 10 秒 | 程序是 PID 1 且没有处理 SIGTERM。在程序中处理,或添加 --init | Node.js 应用 |
容器名称为 web 时连接到 127.0.53.53 | .web 是顶级域名,名称被当作外部域名解析。换个名称 | docker run 参数 |
postgres:18 启动后立即退出 | 18 版需要挂载 /var/lib/postgresql,而不是 /var/lib/postgresql/data | PostgreSQL |
| 数据库还没就绪就报告 healthy | pg_isready、mysqladmin ping 需要添加 -h 127.0.0.1 | MySQL、PostgreSQL |
| Redis 密码错误时健康检查仍然通过 | redis-cli ping 出错时退出代码仍为 0,添加 | grep -q PONG | Redis |
修改 MYSQL_ROOT_PASSWORD 没有效果 | 密码变量只在首次初始化时使用 | MySQL |
| 修改了配置文件,容器内仍然是旧内容 | 挂载单个文件时,编辑器保存会替换该文件。重启容器或改为挂载文件夹 | Nginx |
--env-file 的值带有引号 | docker run --env-file 不会去掉引号,Compose 的 env_file 会 | 环境变量 |
用 rm 删除的机密仍在镜像中 | 每一层都会保留内容;ARG、ENV 也能看到。请使用 --secret | 安全最佳实践 |
exec format error | CPU 架构不同,请使用 --platform 或构建多平台镜像 | 多平台镜像 |
常见问题
命令太多记不住怎么办?
先记住 run、ps、logs、exec、stop、rm、build、compose up/down 这几个,其他需要时查阅本页或 docker 命令 --help。
哪里能找到每条命令的完整参数?
常用命令的完整参数与示例见“命令参考”分类,例如 [docker build](/zh/docker/docker-build/)、[docker ps](/zh/docker/docker-ps/)。
更新于 2026年10月14日