文章

常用的 Docker 命令

常用的 Docker 命令

Docker 常用命令大全

Docker 基础命令

命令说明示例
docker version查看 Docker 客户端与服务端版本docker version
docker info显示 Docker 系统信息docker info
docker login登录 Docker Registry(如 Docker Hub)docker login
docker logout退出登录docker logout
docker search <name>在 Docker Hub 搜索镜像docker search nginx
docker pull <image>拉取镜像docker pull ubuntu:20.04
docker push <image>推送镜像到仓库docker push myrepo/myimage:latest
  • 新装 Docker 环境后,执行 docker run hello-world 验证运行是否正常;

  • 使用 docker info | grep "Storage Driver" 检查存储驱动(overlay2 / aufs);

  • 使用 docker system df 检查镜像和卷的磁盘占用。

镜像(Image)管理

命令功能示例
docker images列出本地镜像docker images
docker rmi <image>删除镜像docker rmi nginx:latest
docker tag <src> <target>给镜像打标签docker tag nginx:latest myrepo/nginx:v1
docker save -o <file>.tar <image>导出镜像到文件docker save -o nginx.tar nginx:latest
docker load -i <file>.tar从文件导入镜像docker load -i nginx.tar
docker history <image>查看镜像构建历史docker history nginx:latest
docker inspect <image>查看镜像详细信息(JSON 格式)docker inspect nginx
docker build -t <tag> <dir>根据 Dockerfile 构建镜像docker build -t myapp:v1 .
1
2
3
4
5
6
7
8
9
# 拉取常用镜像
docker pull ubuntu:20.04
docker pull nginx:latest

# 构建自定义镜像
docker build -t myapp:1.0 .

# 查看镜像分层信息
docker history myapp:1.0
  • 构建企业内网镜像:

  • 清理老旧镜像:

  • 对比镜像大小与缓存层,定位构建优化点。

容器(Container)管理

命令功能示例
docker ps查看运行中的容器docker ps
docker ps -a查看所有容器(含已停止)docker ps -a
docker run [options] <image>创建并运行容器docker run -d -p 80:80 nginx
docker start <container>启动已存在容器docker start myapp
docker stop <container>停止容器docker stop myapp
docker restart <container>重启容器docker restart myapp
docker rm <container>删除容器docker rm myapp
docker rename <old> <new>重命名容器docker rename old_name new_name
docker inspect <container>查看容器详细信息docker inspect myapp
docker exec -it <container> <cmd>进入容器执行命令docker exec -it myapp /bin/bash
docker logs -f <container>实时查看容器日志docker logs -f myapp
docker top <container>查看容器中进程docker top myapp
docker cp <container>:<path> <local>从容器复制文件到主机docker cp myapp:/app/config.yml .
1
2
3
4
5
6
7
8
9
10
11
12
13
# 运行容器(后台 + 端口映射 + 命名)
docker run -d -p 8080:80 --name web nginx

# 实时进入容器终端
docker exec -it web bash

# 查看容器日志(实时滚动)
docker logs -f web

# 停止、启动、删除容器
docker stop web
docker start web
docker rm web

实战场景:

部署一个测试环境:

1
2
3
4
docker run -d --name mysql-dev \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -p 3306:3306 \
  mysql:8.0

用于本地开发测试数据库。

启动前端 + 后端容器:

1
2
docker run -d --name api -p 8080:8080 my-api:v1
docker run -d --name web -p 80:80 -e API_URL=http://localhost:8080 my-web:v1

容器故障排查:

1
2
docker exec -it api bash
cat /var/log/app/error.log

数据卷(Volumes)与挂载

命令功能示例
docker volume ls查看所有卷docker volume ls
docker volume create <name>创建数据卷docker volume create mydata
docker volume inspect <name>查看卷信息docker volume inspect mydata
docker volume rm <name>删除卷docker volume rm mydata
docker run -v <local>:<container>挂载本地目录docker run -v /data:/var/www nginx
docker run --mount使用更灵活的挂载语法docker run --mount source=mydata,target=/app/data nginx
  • 持久化数据库:容器删除后数据仍保留;

  • 开发映射

  • 备份卷数据

网络(Networks)

命令功能示例
docker network ls查看所有网络docker network ls
docker network inspect <name>查看网络详情docker network inspect bridge
docker network create <name>创建自定义网络docker network create mynet
docker network rm <name>删除网络docker network rm mynet
docker run --network=<name>指定容器使用网络docker run --network=mynet nginx
docker network connect/disconnect将容器加入/移出网络docker network connect mynet myapp

实战场景:

自定义网络实现容器互通:

1
2
3
4
docker network create backend_net

docker run -d --name db --network backend_net mysql:8.0
docker run -d --name app --network backend_net -e DB_HOST=db myapp:v1

app 可直接通过主机名 db 访问数据库,无需暴露端口。

快速排查网络问题:

1
2
docker exec -it app ping db
docker exec -it app curl http://db:3306

容器文件与交互调试

命令功能示例
docker attach <container>附加到运行中容器控制台docker attach myapp
docker diff <container>查看容器文件系统变化docker diff myapp
docker stats查看容器实时资源使用docker stats
docker system df查看磁盘使用情况docker system df
docker system prune清理无用容器/镜像/卷docker system prune -a

七、Docker Compose 常用命令

命令功能示例
docker compose up -d启动所有服务docker compose up -d
docker compose down停止并删除容器/网络docker compose down
docker compose ps查看 Compose 服务状态docker compose ps
docker compose logs -f查看所有服务日志docker compose logs -f
docker compose build构建镜像docker compose build
docker compose exec <service> <cmd>在容器中执行命令docker compose exec web bash

docker-compose.yml 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: "3.9"
services:
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - dbdata:/var/lib/mysql
  web:
    image: nginx
    ports:
      - "8080:80"
    depends_on:
      - db
volumes:
  dbdata:

常用命令:

1
2
3
4
docker compose up -d
docker compose down
docker compose logs -f
docker compose exec web bash
  • 一键启动完整开发环境:docker compose up -d

  • 在 CI/CD 流程中部署测试服务;

  • 自动清理旧网络与卷:docker compose down -v

系统级清理命令(慎用)

命令功能
docker system prune -a删除所有未使用镜像、容器、网络、缓存
docker image prune -a删除所有未使用镜像
docker container prune删除所有已停止容器
docker volume prune删除所有未使用卷
1
2
3
4
5
6
7
8
# 清理未使用资源
docker system prune -a

# 删除所有停止的容器
docker rm $(docker ps -aq -f status=exited)

# 删除所有悬空镜像
docker rmi $(docker images -q -f dangling=true)

实战技巧:

  • 每次构建大镜像前执行 docker system df 查看磁盘空间;

  • 在 CI 环境中可自动清理临时镜像,避免 runner 宕机。

提示: 这些命令不可逆,请务必确认后再执行!

九、实用技巧与组合命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看最近启动的容器日志
docker logs $(docker ps -lq)

# 删除所有已退出的容器
docker rm $(docker ps -aq -f status=exited)

# 删除所有悬空镜像
docker rmi $(docker images -q -f dangling=true)

# 一键停止所有容器
docker stop $(docker ps -q)

# 一键删除所有容器
docker rm $(docker ps -aq)

参考文档

本文由作者按照 CC BY 4.0 进行授权