Docker 常用命令速查表:容器/镜像/网络/Compose 实战手册(2026 版)

Docker 常用命令速查表:容器/镜像/网络/Compose 实战手册(2026 版)

最有用的命令

命令说明例子
1. docker查询所有可用的docker命令docker
2. docker version显示docker版本docker version
3. docker info显示系统信息docker info
4. docker pull从docker hub下载镜像 docker pull hello-world:latest
5. docker build通过Dockerfile构建docker镜像 docker build .
6. docker run通过镜像创建一个容器 docker run hello-world
7. docker commit将容器变化保存到容器文件或者创建一个新的镜像文件 docker commit :
8. docker ps显示所有正在运行的容器docker ps
9. docker start启动一个容器
10. docker stop停止一个容器
11. docker logs显示容器的日志
12. docker rename修改容器的名称
13. docker rm删除一个容器,删除前要先停止运行

Docker Container 容器生命周期命令

命令说明
docker create创建一个新的容器
docker ps列出正在运行的容器
docker run通过镜像创建一个容器
docker start启动一个容器
docker stop停止一个容器
docker restart重启一个容器
docker pause暂停容器
docker unpause恢复容器运行
docker attach将终端附着到容器
docker inspect显示容器信息
docker wait堵塞一个或多个容器,并打印他们的退出代码
docker rm删除一个容器,删除前要先停止运行
docker kill停止并删除一个容器
docker cp在本地系统和容器之间复制文件

Docker Image 镜像命令

命令说明
docker build通过Dockerfile构建docker镜像
docker pull从docker hub下载镜像
docker tag为镜像添加标签
docker images显示所有镜像
docker push推送镜像到
docker history查看镜像到历史
docker inspect显示镜像的信息,是json格式的
docker save保存到镜像文件
docker import从打包文件导入镜像
docker export导出镜像到打包文件
docker load加载镜像文件
docker rmi删除镜像文件

Docker Volume 数据卷命令

命令说明
docker volume create创建数据卷
docker volume inspect查看数据卷信息
docker volume rm删除数据卷

Docker Networking 网络命令

命令说明
docker network create创建一个docker网络
docker network ls列表显示docker网络
docker network inspecrt显示docker网络的细节

Docker Logs and Monitoring 日志和监控命令

命令说明
docker ps -a显示所有运行中或者已经停止的容器
docker logs显示容器的日志
docker events获取所有容器的事件
docker top显示容器中的所有进程
docker stats检查cpu,内存和网络I/O的使用情况
docker port显示容器所有公共端口

Docker Prune 清理命令

命令说明
docker system prune清除所有悬空的资源活着未绑定到容器的资源
docker image prune删除悬空的镜像
docker container prune删除悬空的容器
docker volume prune删除悬空的数据卷
docker network prune删除悬空的网络

Docker Compose命令

命令说明
docker-compose build创建docker compose文件
docker-compose up运行docker compose文件
docker-compose ls显示docker compose定义的相关镜像
docker-compose start启动所有docker compose定义的容器
docker-compose run运行docker compose里面的其中一个应用程序
docker-compose rm删除compose里面的容器
docker-compose ps通过compose来检查容器运行状态

Docker Hub命令

命令说明
docker search查找docker镜像
docker pull从docker hub下载镜像
docker login登录docker hub
docker push推送镜像或者整改repository到docker hub
docker tag为镜像添加标签
docker logout退出docker hub

Docker 高级命令详解

容器生命周期管理

创建和启动容器

# 创建但不启动容器
docker create --name mycontainer nginx:latest

# 启动已创建的容器
docker start mycontainer

# 创建并启动(最常用)
docker run -d --name webserver -p 8080:80 nginx:latest

# 交互式运行
docker run -it --name myshell ubuntu:latest /bin/bash

# 运行后自动删除
docker run --rm -it ubuntu:latest echo "Hello"

# 指定资源限制
docker run -d --name limited \
  --memory="512m" \
  --cpus="1.0" \
  --restart=always \
  nginx:latest

容器状态管理

# 暂停容器(冻结进程)
docker pause mycontainer

# 恢复暂停的容器
docker unpause mycontainer

# 重启容器
docker restart mycontainer

# 重启并设置超时
docker restart -t 30 mycontainer

# 停止容器(优雅停止)
docker stop mycontainer

# 强制停止容器
docker kill mycontainer

# 等待容器停止
docker wait mycontainer

容器信息查询

基本信息查询

# 列出所有容器
docker ps -a

# 列出运行中的容器
docker ps

# 显示最近创建的5个容器
docker ps -n 5

# 显示容器大小
docker ps -s

# 格式化输出
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"

# JSON格式输出
docker ps --format '{{json .}}'

详细信息查询

# 查看容器详细信息
docker inspect mycontainer

# 查看容器IP地址
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mycontainer

# 查看容器日志
docker logs mycontainer

# 实时查看日志
docker logs -f mycontainer

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

# 查看特定时间后的日志
docker logs --since "2024-01-01T00:00:00" mycontainer

# 查看容器进程
docker top mycontainer

# 查看容器资源使用
docker stats mycontainer

# 实时监控所有容器
docker stats

容器文件操作

文件复制

# 从容器复制到主机
docker cp mycontainer:/app/data.txt ./data.txt

# 从主机复制到容器
docker cp ./config.json mycontainer:/app/config.json

# 复制整个目录
docker cp mycontainer:/var/log ./logs

# 复制时保留权限
docker cp -a mycontainer:/data ./data

在容器中执行命令

# 在运行中的容器执行命令
docker exec mycontainer ls -la /app

# 交互式执行
docker exec -it mycontainer /bin/bash

# 以root用户执行
docker exec -u root mycontainer apt update

# 执行多个命令
docker exec mycontainer sh -c "cd /app && ls -la"

# 执行命令并捕获输出
docker exec mycontainer cat /etc/os-release > os_info.txt

Docker 网络管理

网络创建和管理

# 列出所有网络
docker network ls

# 创建自定义网络
docker network create mynetwork

# 创建指定子网的网络
docker network create --subnet=192.168.1.0/24 mynetwork

# 创建bridge网络
docker network create --driver bridge mybridge

# 创建overlay网络(用于Swarm)
docker network create --driver overlay myoverlay

# 删除网络
docker network rm mynetwork

# 删除未使用的网络
docker network prune

# 查看网络详情
docker network inspect mynetwork

# 连接容器到网络
docker network connect mynetwork mycontainer

# 断开容器与网络
docker network disconnect mynetwork mycontainer

网络调试

# 查看容器网络配置
docker inspect mycontainer | grep -A 20 "NetworkSettings"

# 进入容器网络命名空间
docker exec -it mycontainer ip addr

# 测试容器间网络连通性
docker exec mycontainer ping othercontainer

# 查看网络流量
docker exec mycontainer netstat -tuln

Docker 存储管理

数据卷管理

# 列出所有数据卷
docker volume ls

# 创建数据卷
docker volume create mydata

# 查看数据卷详情
docker volume inspect mydata

# 删除数据卷
docker volume rm mydata

# 删除未使用的数据卷
docker volume prune

# 使用数据卷运行容器
docker run -d -v mydata:/var/lib/mysql mysql:latest

# 使用绑定挂载
docker run -d -v /host/path:/container/path nginx:latest

# 使用tmpfs挂载
docker run -d --tmpfs /tmp:rw,size=100m nginx:latest

存储清理

# 查看Docker磁盘使用
docker system df

# 详细查看磁盘使用
docker system df -v

# 清理未使用的资源
docker system prune

# 清理所有未使用的资源(包括镜像)
docker system prune -a

# 清理并确认
docker system prune -a -f

# 只清理镜像
docker image prune -a

# 只清理容器
docker container prune

# 只清理网络
docker network prune

# 只清理构建缓存
docker builder prune

Docker 镜像管理

镜像构建和标记

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

# 构建时不缓存
docker build --no-cache -t myapp:1.0 .

# 标记镜像
docker tag myapp:1.0 myregistry.com/myapp:1.0

# 删除镜像
docker rmi myapp:1.0

# 强制删除镜像
docker rmi -f myapp:1.0

# 删除悬空镜像
docker image prune

# 删除所有未使用的镜像
docker image prune -a

镜像信息查看

# 列出所有镜像
docker images

# 列出特定镜像
docker images nginx

# 查看镜像历史
docker history nginx:latest

# 查看镜像详情
docker inspect nginx:latest

# 查看镜像层
docker history --no-trunc nginx:latest

Docker Compose 高级用法

多容器编排

# docker-compose.yml
version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    networks:
      - frontend
    depends_on:
      - app
  
  app:
    build: ./app
    environment:
      - DB_HOST=db
      - DB_PORT=3306
    networks:
      - frontend
      - backend
    depends_on:
      - db
  
  db:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MYSQL_DATABASE=myapp
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - backend

networks:
  frontend:
  backend:

volumes:
  db_data:

Compose命令

# 启动所有服务
docker-compose up -d

# 停止所有服务
docker-compose down

# 重启服务
docker-compose restart

# 查看服务状态
docker-compose ps

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

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

# 进入服务容器
docker-compose exec web bash

# 构建服务
docker-compose build

# 不使用缓存构建
docker-compose build --no-cache

# 扩展服务
docker-compose up -d --scale web=3

# 暂停服务
docker-compose pause

# 恢复服务
docker-compose unpause

Docker Swarm 集群管理

初始化和加入集群

# 初始化Swarm管理器
docker swarm init

# 获取加入命令
docker swarm join-token worker
docker swarm join-token manager

# 加入集群
docker swarm join --token <token> <manager-ip>:2377

# 离开集群
docker swarm leave

# 强制离开
docker swarm leave --force

服务管理

# 创建服务
docker service create --name web --replicas 3 nginx:latest

# 列出服务
docker service ls

# 查看服务详情
docker service inspect web

# 查看服务日志
docker service logs web

# 更新服务
docker service update --image nginx:1.19 web

# 扩展服务
docker service scale web=5

# 删除服务
docker service rm web

# 滚动更新
docker service update --image nginx:1.20 --update-parallelism 2 web

Docker 安全命令

安全扫描

# 扫描镜像漏洞(需要Docker Scout)
docker scout cves myimage:latest

# 扫描容器
docker scout cves --container mycontainer

# 查看镜像策略
docker scout policy myimage:latest

# 比较镜像
docker scout compare myimage:1.0 myimage:2.0

权限管理

# 以非root用户运行
docker run -u 1000:1000 myapp

# 删除所有capabilities
docker run --cap-drop=ALL myapp

# 添加特定capability
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE myapp

# 只读文件系统
docker run --read-only myapp

# 限制PID数量
docker run --pids-limit 100 myapp

# 禁用网络
docker run --network none myapp

Docker 调试命令

容器调试

# 进入运行中的容器
docker exec -it mycontainer /bin/sh

# 查看容器进程树
docker top mycontainer

# 查看容器资源使用
docker stats mycontainer

# 查看容器事件
docker events --filter container=mycontainer

# 导出容器
docker export mycontainer > mycontainer.tar

# 导入容器
docker import mycontainer.tar myimage:latest

镜像调试

# 查看镜像层
docker history myimage

# 保存镜像
docker save myimage > myimage.tar

# 加载镜像
docker load < myimage.tar

# 构建时调试
docker build --progress=plain -t myapp .

Docker 监控和日志

实时监控

# 监控所有容器
docker stats

# 监控特定容器
docker stats mycontainer

# 查看系统事件
docker events

# 过滤事件
docker events --filter type=container

# 查看Docker系统信息
docker system info

# 查看Docker版本
docker version

日志管理

# 配置日志驱动
docker run --log-driver=json-file --log-opt max-size=10m myapp

# 使用syslog
docker run --log-driver=syslog --log-opt syslog-address=udp://localhost:514 myapp

# 使用journald
docker run --log-driver=journald myapp

# 查看日志配置
docker inspect -f '{{.HostConfig.LogConfig}}' mycontainer

Docker API和远程管理

启用远程API

# 编辑Docker服务文件
sudo systemctl edit docker

# 添加以下内容
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

# 重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

使用远程API

# 列出容器
curl -H "Content-Type: application/json" http://localhost:2375/containers/json

# 创建容器
curl -X POST -H "Content-Type: application/json" \
  http://localhost:2375/containers/create?name=mycontainer \
  -d '{"Image":"nginx:latest"}'

# 启动容器
curl -X POST http://localhost:2375/containers/mycontainer/start

常用别名和脚本

创建有用别名

# 添加到 ~/.bashrc 或 ~/.zshrc
alias dps='docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"'
alias dimg='docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"'
alias dlogs='docker logs -f'
alias dexec='docker exec -it'
alias dstop='docker stop'
alias drm='docker rm'
alias drmi='docker rmi'
alias dclean='docker system prune -a -f'

# 一键清理所有未使用的资源
alias dcleanall='docker system prune -a -f --volumes'

实用脚本

#!/bin/bash
# 批量停止并删除所有容器
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)

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

# 导出所有容器日志
for container in $(docker ps -q); do
  docker logs $container > logs_${container}.log 2>&1
done

# 备份所有数据卷
for volume in $(docker volume ls -q); do
  docker run --rm -v ${volume}:/volume -v $(pwd):/backup alpine \
    tar czf /backup/volume_${volume}.tar.gz -C /volume .
done

总结

Docker命令虽然众多,但掌握核心命令就能应对大部分场景:

日常使用

  • docker run - 运行容器
  • docker ps - 查看容器
  • docker logs - 查看日志
  • docker exec - 进入容器
  • docker stop/start - 停止/启动容器

开发调试

  • docker build - 构建镜像
  • docker-compose - 多容器编排
  • docker inspect - 查看详情
  • docker cp - 文件复制

运维管理

  • docker system prune - 清理资源
  • docker stats - 监控资源
  • docker network - 网络管理
  • docker volume - 存储管理

最佳实践

  1. 使用有意义的容器名称
  2. 定期清理未使用的资源
  3. 使用docker-compose管理复杂应用
  4. 配置日志轮转避免磁盘满
  5. 使用健康检查确保服务可用

掌握这些命令,你就能高效地使用Docker进行容器化应用的开发、部署和运维!


相关资源: