Docker命令合集&详解

148 阅读6分钟

总结的相对全面且详细的 DockerDocker Compose 命令合集。为了方便查阅,我将其分为 基础/镜像管理容器操作Docker Compose 编排 以及 常用参数详解 四个部分。


第一部分:Docker 基础与镜像命令 (Images)

镜像(Image)是容器的静态模板(类似于软件安装包)。

命令简写/变体作用详解
docker search <关键词>-搜索镜像在 Docker Hub 上搜索公共镜像。
docker pull <镜像名>:<标签>-拉取镜像下载镜像。如果不写标签,默认下载:latest.
docker imagesdocker image ls查看镜像列出本地所有下载的镜像。
docker rmi <镜像ID或名称>docker image rm删除镜像删除本地镜像。如果镜像正在被容器使用,需先删除容器。
docker build -t <名称> .-构建镜像根据当前目录下的Dockerfile构建新镜像。
docker tag <源ID> <新名>-标记镜像给镜像打标签(通常用于上传到私有仓库前)。
docker save -o <包名.tar> <镜像>-导出镜像将镜像保存为 tar 文件(用于离线迁移)。
docker load -i <包名.tar>-导入镜像从 tar 文件加载镜像。
docker container prune-清理容器删除所有已停止的容器。
docker image prune-清理镜像删除所有悬空镜像。
docker image prune -a-清理镜像如果要删除所有未使用的镜像(不管是否悬空)。
docker network prune-清理网络删除所有未使用的网络。
docker volume prune-清理卷删除所有未使用的卷
docker system prune-清理系统慎用。一键清理未使用的镜像、悬空镜像和停止的容器。

第二部分:Docker 容器操作命令 (Containers)

容器(Container)是镜像运行时的实体(类似于运行中的软件进程)。

  1. 生命周期管理

命令作用详解
docker run [参数] <镜像>创建并启动最核心命令(详见下方参数详解)。
docker start <容器ID>启动启动一个已经停止的容器。
docker stop <容器ID>停止优雅停止容器(发送 SIGTERM 信号)。
docker restart <容器ID>重启重启容器。
docker kill <容器ID>强制停止强制杀掉容器进程(发送 SIGKILL 信号)。
docker rm <容器ID>删除容器删除已停止的容器。加-f可强制删除运行中的容器。
  1. 查看与交互

命令作用详解
docker ps查看运行中容器仅列出正在运行的。
docker ps -a查看所有容器列出所有容器(包括已停止的)。
docker logs <容器ID>查看日志查看容器的标准输出日志。常用-f实时跟踪。
docker exec -it <容器ID> /bin/bash进入容器在运行的容器中开启一个交互终端。(sh或bash)
docker inspect <容器ID>查看详情查看容器的 IP、挂载、环境变量等详细 JSON 信息。
docker stats资源监控实时查看容器的 CPU、内存、网络 IO 使用情况。
docker cp <本地路径> <容器ID>:<路径>文件拷贝在宿主机和容器之间复制文件。
docker network ls查看网络查看容器网络ID、类型、名称等信息。
docker volume create <卷名称>创建卷创建容器卷。
docker run -v <卷名称>:/app/data nginx挂载卷将指定卷挂载到容器中。

第三部分:Docker Compose 命令

Docker Compose 用于管理多容器应用。 注意:新版 Docker 已集成 Compose,命令由 docker-compose 变为 docker compose (中间是空格),但老写法依然兼容。

命令作用详解
docker-compose up -d启动服务后台启动所有服务。如果镜像不存在会自动构建或拉取。
docker-compose up -d <服务名>启动指定服务后台启动指定服务。如果镜像不存在会自动构建或拉取。
docker-compose down停止并清理停止容器并删除容器、网络。
docker-compose down -v彻底清理在 down 的基础上,同时删除数据卷(Volumes)(慎用)。
docker-compose stop停止停止容器但不删除。
docker-compose start/stop启停仅启动或停止服务,不删除容器。
docker-compose restart重启重启服务。
docker-compose up -d --force-recreate重建强制重新创建容器
docker-compose ps查看状态查看当前 docker-compose.yml 管理的容器状态。
docker-compose logs -f查看日志实时查看所有服务的日志聚合。
docker-compose logs -f <服务名>指定日志仅查看某一个服务的日志。推荐使用--tail参数只获取最新日志
docker-compose build构建重新构建镜像(不启动)。
docker-compose pull拉取拉取 docker-compose.yml 中定义的镜像。
docker-compose pull <服务名>拉取拉取 docker-compose.yml 中指定服务名镜像。
docker-compose config检查配置验证 docker-compose.yml 文件格式是否正确。

第四部分:核心命令参数详解 (重点)

初学者最容易晕的是 docker rundocker compose 的各种参数,这里做深度解析。

1. docker run 常用参数

语法: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

  • -d (Detached): 后台运行容器,并返回容器 ID。

    • 例: docker run -d nginx
  • -p (Port): 端口映射。格式为 宿主机端口:容器端口

    • 例: docker run -p 8080:80 nginx (访问宿主机的 8080 即访问容器的 80)。
  • -v (Volume): 挂载数据卷。格式为 宿主机路径:容器路径

    • 例: docker run -v /data/html:/usr/share/nginx/html nginx
  • --name : 给容器起一个好记的名字(否则是随机名)。

    • 例: docker run --name my-web nginx
  • -e ( Environment ): 设置环境变量。

    • 例: docker run -e MYSQL_ROOT_PASSWORD=123456 mysql
  • --restart : 重启策略。

    • no: 默认,不重启。
    • always: 只要容器退出了就重启(开机自启常用)。
    • on-failure: 只有非正常退出(错误码非0)才重启。
  • --network : 指定网络模式(如 host, bridge 或自定义网络)。

  • --rm : 容器停止后自动删除容器文件(用于临时测试)。

2. docker logs 常用参数

  • -f (Follow): 实时跟踪日志输出(类似于 Linux 的 tail -f)。

  • --tail <行数> : 仅查看最后 N 行。

    • 例: docker logs -f --tail 100 my-web

3. docker exec 常用参数

  • -i (Interactive): 保持 STDIN 打开。
  • -t (TTY): 分配一个伪终端。
  • 组合使用 -it : 几乎是搭配使用的,让我们像通过 SSH 一样进入容器。(部分容器可能没有入口)

第五部分:实战场景举例

场景 1:彻底清理 Docker 空间

当磁盘空间不足时,运行以下命令清理所有不再使用的资源:

# 清理停止的容器、未被使用的网络、悬空的镜像
docker system prune

# 如果要连同未使用的数据卷一起清理(注意数据丢失风险)
docker system prune --volumes

场景 2:更新 Docker Compose 服务

当你修改了 docker-compose.yml 或代码需要重新部署时:

# 1. 拉取最新镜像(如果使用的是远程镜像)
docker compose pull

# 2. 重新构建(如果使用的是本地 Dockerfile)
docker compose build

# 3. 重新启动(Docker 会智能识别变更,仅重启有变化的服务)
docker compose up -d

# 4. 删除旧的无用镜像
docker image prune -f

场景 3:调试容器

容器启动失败,如何排查?

# 1. 查看容器状态,看是否 Exited
docker ps -a

# 2. 查看日志报错
docker logs <容器ID>

# 3. 如果容器还在运行但服务不正常,进入容器内部查看
docker exec -it <容器ID> /bin/sh
# 检查配置文件或网络连接
ping baidu.com
cat /etc/nginx/nginx.conf

总结速查表 (Cheat Sheet)

  • 启动: docker run -d -p 80:80 --name web nginx
  • 进入: docker exec -it web bash
  • 日志: docker logs -f web
  • 停止删: docker stop web && docker rm web
  • 编排起: docker compose up -d
  • 编排停: docker compose down