1. 引言

Docker 作为目前最流行的容器化技术,已经成为开发、测试、部署环节中不可或缺的工具。无论是个人项目还是企业级应用,掌握 Docker 的常用命令都是基本功。本文将系统梳理 Docker 部署过程中最常用的命令,从镜像管理、容器操作到网络与数据卷,帮助你快速上手并高效运维。

2. 镜像管理命令

镜像是 Docker 部署的基础,掌握镜像的拉取、查看、删除与构建是第一步。

2.1 拉取镜像

# 从 Docker Hub 拉取镜像,默认 latest 标签
docker pull nginx

# 拉取指定版本
docker pull nginx:1.25

# 从指定仓库拉取
docker pull myregistry.example.com/myapp:v1.0

2.2 查看本地镜像

# 列出所有本地镜像
docker images

# 只显示镜像 ID
docker images -q

# 查看指定镜像
docker images nginx

2.3 删除镜像

# 删除指定镜像
docker rmi nginx:1.25

# 强制删除(即使有容器在使用)
docker rmi -f nginx

# 清理所有未被使用的镜像
docker image prune -a

2.4 构建镜像

# 使用当前目录下的 Dockerfile 构建
docker build -t myapp:1.0 .

# 指定 Dockerfile 路径构建
docker build -f ./deploy/Dockerfile -t myapp:1.0 .

3. 容器生命周期管理

容器是镜像的运行实例,以下命令覆盖了容器从创建到销毁的完整生命周期。

3.1 创建并启动容器

# 前台运行(占用终端)
docker run nginx

# 后台运行(推荐用于部署)
docker run -d nginx

# 指定名称、端口映射、环境变量
docker run -d --name my-nginx -p 8080:80 -e ENV=production nginx

# 挂载数据卷并设置重启策略
docker run -d --name my-app \
  -p 3000:3000 \
  -v /host/data:/app/data \
  --restart=always \
  myapp:1.0

3.2 查看容器

# 查看运行中的容器
docker ps

# 查看所有容器(包括已停止的)
docker ps -a

# 查看容器详细信息(JSON 格式)
docker inspect my-nginx

# 查看容器资源占用
docker stats

3.3 停止与启动容器

# 停止容器
docker stop my-nginx

# 启动已停止的容器
docker start my-nginx

# 重启容器
docker restart my-nginx

# 暂停/恢复容器进程
docker pause my-nginx
docker unpause my-nginx

3.4 删除容器

# 删除已停止的容器
docker rm my-nginx

# 强制删除运行中的容器
docker rm -f my-nginx

# 清理所有已停止的容器
docker container prune

4. 容器交互与日志

部署完成后,查看日志和进入容器排查问题是日常运维的高频操作。

4.1 查看日志

# 查看容器日志
docker logs my-nginx

# 实时跟踪日志输出
docker logs -f my-nginx

# 查看最近 100 行日志
docker logs --tail 100 my-nginx

# 带时间戳查看日志
docker logs -t my-nginx

4.2 进入容器

# 进入容器并启动交互式 Shell
docker exec -it my-nginx /bin/bash

# 对于精简镜像(无 bash),使用 sh
docker exec -it my-nginx /bin/sh

# 在容器内执行单条命令
docker exec my-nginx ls /etc/nginx

4.3 复制文件

# 从容器复制文件到宿主机
docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf

# 从宿主机复制文件到容器
docker cp ./app.jar my-app:/app/app.jar

5. 网络管理

多容器协作部署时,网络配置至关重要。

5.1 查看网络

# 列出所有网络
docker network ls

# 查看网络详情
docker network inspect bridge

5.2 创建与使用网络

# 创建自定义网络
docker network create my-network

# 指定子网创建网络
docker network create --subnet=172.20.0.0/16 my-network

# 容器加入指定网络
docker run -d --name my-app --network my-network myapp:1.0

# 将运行中的容器连接到网络
docker network connect my-network my-nginx

5.3 端口映射

# 随机映射端口
docker run -d -P nginx

# 指定端口映射(宿主机:容器)
docker run -d -p 8080:80 nginx

# 绑定指定 IP 的端口映射
docker run -d -p 192.168.1.100:8080:80 nginx

6. 数据卷管理

数据卷用于持久化容器数据,是数据库等有状态服务部署的关键。

6.1 创建与查看数据卷

# 创建数据卷
docker volume create my-data

# 列出所有数据卷
docker volume ls

# 查看数据卷详情
docker volume inspect my-data

6.2 挂载数据卷

# 使用命名数据卷
docker run -d --name mysql \
  -v my-data:/var/lib/mysql \
  mysql:8.0

# 使用宿主机目录挂载(bind mount)
docker run -d --name nginx \
  -v /host/nginx/html:/usr/share/nginx/html \
  nginx

6.3 删除数据卷

# 删除指定数据卷
docker volume rm my-data

# 清理所有未被使用的数据卷
docker volume prune

7. 容器编排与清理

对于多容器应用,Docker Compose 是常用的编排工具。

7.1 Docker Compose 常用命令

# 启动服务(后台运行)
docker compose up -d

# 构建镜像并启动
docker compose up -d --build

# 查看服务状态
docker compose ps

# 查看服务日志
docker compose logs -f

# 停止并移除服务
docker compose down

# 停止服务但保留数据卷
docker compose stop

7.2 系统清理

# 查看磁盘占用
docker system df

# 清理所有未使用的资源(镜像、容器、网络、构建缓存)
docker system prune -a

# 清理所有停止的容器
docker container prune

# 清理所有未被使用的镜像
docker image prune -a

8. 总结

本文系统梳理了 Docker 部署过程中最常用的命令,涵盖镜像管理、容器生命周期、日志交互、网络、数据卷以及 Compose 编排等核心场景。建议在实际部署中结合 docker --help 查看完整参数说明,并善用 docker inspect 排查问题。掌握这些命令,你将能够独立完成从镜像构建到容器上线的完整部署流程。

更多推荐