Docker 常用命令速查手册
> 整理时间:2026-03-14 | 标签:Docker, 容器, DevOps, 运维
一、容器操作
运行容器
# 基本运行
docker run -d -p 8080:80 --name myapp nginx
# 常用参数说明
# -d 后台运行(detached mode)
# -p 8080:80 端口映射(宿主机:容器)
# --name 指定容器名称
# -e 设置环境变量
# --rm 容器停止后自动删除
# -v 挂载数据卷
# 带环境变量和数据卷
docker run -d \
-p 5432:5432 \
--name postgres \
-e POSTGRES_PASSWORD=secret \
-v pgdata:/var/lib/postgresql/data \
postgres:16
查看容器
# 查看运行中的容器
docker ps
# 查看所有容器(含已停止)
docker ps -a
# 只显示容器 ID
docker ps -q
启停管理
docker start myapp # 启动
docker stop myapp # 优雅停止(SIGTERM)
docker restart myapp # 重启
docker kill myapp # 强制停止(SIGKILL)
删除容器
docker rm myapp # 删除已停止的容器
docker rm -f myapp # 强制删除(运行中也可以)
# 删除所有停止的容器
docker container prune
进入容器
docker exec -it myapp bash # 进入交互式 shell
docker exec -it myapp sh # 没有 bash 时用 sh
# 以 root 身份进入
docker exec -it -u root myapp bash
# 直接执行单条命令
docker exec myapp cat /etc/hosts
二、镜像操作
# 拉取镜像
docker pull nginx:latest
docker pull nginx:1.25
# 查看本地镜像
docker images
docker images -a # 包含中间层
# 删除镜像
docker rmi nginx:latest
docker rmi -f nginx # 强制删除
# 构建镜像
docker build -t myapp:1.0 .
docker build -t myapp:1.0 -f Dockerfile.prod .
# 打标签
docker tag myapp:1.0 registry.example.com/myapp:1.0
# 推送到 Registry
docker push registry.example.com/myapp:1.0
# 查看镜像构建历史
docker history myapp:1.0
# 删除未使用的镜像
docker image prune
docker image prune -a # 删除所有未被引用的镜像
三、日志 & 状态监控
# 查看日志
docker logs myapp
docker logs -f myapp # 实时跟踪(follow)
docker logs --tail 100 myapp # 最后 100 行
docker logs --since 1h myapp # 最近 1 小时
docker logs -t myapp # 带时间戳
# 查看资源占用(CPU/内存/网络/IO)
docker stats
docker stats myapp # 只看指定容器
docker stats --no-stream # 只输出一次,不刷新
# 查看容器详细信息(JSON 格式)
docker inspect myapp
# 查看容器内进程
docker top myapp
# 查看端口映射
docker port myapp
四、Docker Compose
# 启动所有服务(后台运行)
docker compose up -d
# 停止并删除容器、网络
docker compose down
# 停止并删除(含数据卷)
docker compose down -v
# 重启
docker compose restart
# 只重启某个服务
docker compose restart api
# 查看日志
docker compose logs
docker compose logs -f
docker compose logs -f api # 只看某个服务
# 查看状态
docker compose ps
# 重新构建镜像
docker compose build
docker compose build --no-cache # 不用缓存
# 构建并启动
docker compose up -d --build
# 进入某个服务容器
docker compose exec api bash
# 运行一次性命令
docker compose run --rm api python migrate.py
五、数据卷(Volume)
# 创建 volume
docker volume create mydata
# 查看 volumes
docker volume ls
docker volume inspect mydata
# 删除 volume
docker volume rm mydata
# 删除未使用的 volumes
docker volume prune
# 挂载方式一:目录绑定(Bind Mount)
docker run -v /host/path:/container/path nginx
# 挂载方式二:命名卷(推荐)
docker run -v mydata:/data nginx
# 只读挂载
docker run -v /host/config:/config:ro nginx
六、网络
# 查看网络列表
docker network ls
# 创建自定义网络
docker network create mynet
# 运行时指定网络
docker run --network mynet nginx
# 查看网络详情
docker network inspect mynet
# 将容器加入网络
docker network connect mynet myapp
# 删除网络
docker network rm mynet
七、清理(释放磁盘空间)
# 删除所有停止的容器
docker container prune
# 删除未使用的镜像
docker image prune -a
# 删除未使用的 volumes
docker volume prune
# 删除未使用的网络
docker network prune
# 一键清理所有无用资源(最彻底)
docker system prune -a --volumes
# 查看 Docker 占用磁盘情况
docker system df
八、文件复制
# 从容器复制到宿主机
docker cp myapp:/app/logs/error.log ./error.log
# 从宿主机复制到容器
docker cp ./config.yaml myapp:/app/config.yaml
九、常用 Dockerfile 片段
# 多阶段构建(推荐,减小镜像体积)
FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN go build -o main .
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/main .
EXPOSE 8080
CMD ["./main"]
十、高频命令速记
| 需求 | 命令 |
|---|---|
| 启动项目 | `docker compose up -d` |
| 查看日志 | `docker compose logs -f` |
| 进入容器 | `docker exec -it |
| 查看状态 | `docker ps` |
| 重启服务 | `docker compose restart |
| 清理空间 | `docker system prune -a` |
| 查看资源 | `docker stats` |
参考:Docker 官方文档 docs.docker.com | Docker Compose v2 文档