Docker 命令速查手册
📦 镜像管理
| 命令 |
说明 |
docker images |
列出所有镜像 |
docker pull <镜像名>:<标签> |
拉取镜像 |
docker rmi <镜像ID> |
删除镜像 |
docker image prune -f |
清除所有 <none> 悬空镜像 |
docker image prune -a -f |
清除所有未使用的镜像(⚠️ 慎用) |
docker tag <源镜像> <新标签> |
给镜像打标签 |
docker build -t <名称>:<标签> . |
从 Dockerfile 构建镜像 |
docker save -o <文件名>.tar <镜像名> |
导出镜像为 tar |
docker load -i <文件名>.tar |
从 tar 导入镜像 |
docker history <镜像名> |
查看镜像构建历史 |
🚀 容器生命周期
| 命令 |
说明 |
docker run <镜像> |
创建并启动容器 |
docker start <容器> |
启动已停止的容器 |
docker stop <容器> |
优雅停止容器 |
docker restart <容器> |
重启容器 |
docker kill <容器> |
强制杀死容器 |
docker rm <容器> |
删除已停止的容器 |
docker rm -f <容器> |
强制删除运行中的容器 |
🏃 docker run 常用参数
docker run \
-d \ # 后台运行
--name <名称> \ # 容器命名
-p <宿主端口>:<容器端口> \ # 端口映射
-v <宿主路径>:<容器路径> \ # 目录挂载
-e <变量名>=<值> \ # 环境变量
--network <网络名> \ # 指定网络
--restart unless-stopped \ # 自动重启策略
--rm \ # 停止后自动删除
-it <镜像> /bin/bash # 交互式进入
<镜像名>:<标签>
restart 策略
| 值 |
说明 |
no |
不自动重启(默认) |
always |
总是重启 |
unless-stopped |
除非手动停止,否则重启 |
on-failure[:max] |
非正常退出时重启 |
📋 容器查看
| 命令 |
说明 |
docker ps |
查看运行中的容器 |
docker ps -a |
查看所有容器(含已停止) |
docker ps --no-trunc |
显示完整命令 |
docker logs <容器> |
查看日志 |
docker logs -f <容器> |
实时跟踪日志 |
docker logs --tail 100 <容器> |
最后 100 行日志 |
docker top <容器> |
查看容器内进程 |
docker stats |
实时资源占用(CPU/内存/网络) |
🔍 容器详情(inspect)
| 命令 |
说明 |
docker inspect <容器> |
查看所有详细信息(JSON) |
docker inspect <容器> -f '{{json .HostConfig.Binds}}' |
查看挂载目录 |
docker inspect <容器> -f '{{json .NetworkSettings.Ports}}' |
查看端口映射 |
docker inspect <容器> -f '{{json .Config.Env}}' |
查看环境变量 |
docker inspect <容器> -f '{{json .HostConfig.RestartPolicy}}' |
查看重启策略 |
docker inspect <容器> -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' |
查看 IP 地址 |
💾 数据卷(Volume)
| 命令 |
说明 |
docker volume ls |
列出所有卷 |
docker volume create <名称> |
创建卷 |
docker volume inspect <名称> |
查看卷详情 |
docker volume rm <名称> |
删除卷 |
docker volume prune -f |
清除未使用的卷 |
-v vs --mount
# -v 简写
docker run -v /host/path:/container/path <镜像>
# --mount 更明确
docker run --mount type=bind,source=/host/path,target=/container/path <镜像>
docker run --mount type=volume,source=myvol,target=/container/path <镜像>
🌐 网络管理
| 命令 |
说明 |
docker network ls |
列出网络 |
docker network create <名称> |
创建网络 |
docker network inspect <名称> |
查看网络详情 |
docker network rm <名称> |
删除网络 |
docker network prune -f |
清除未使用的网络 |
docker network connect <网络> <容器> |
容器加入网络 |
docker network disconnect <网络> <容器> |
容器离开网络 |
🐙 Docker Compose
| 命令 |
说明 |
docker-compose up -d |
后台启动所有服务 |
docker-compose down |
停止并删除所有容器/网络 |
docker-compose down -v |
同上,同时删除数据卷(⚠️ 慎用) |
docker-compose restart <服务名> |
重启某个服务 |
docker-compose logs -f <服务名> |
跟踪某个服务日志 |
docker-compose ps |
查看服务状态 |
docker-compose pull |
拉取最新镜像 |
docker-compose build |
重新构建镜像 |
docker-compose exec <服务名> /bin/sh |
进入运行中的服务 |
docker-compose.yml 模板
version: "3.8"
services:
app:
image: nginx:latest
container_name: my-app
ports:
- "80:80"
- "443:443"
volumes:
- ./data:/var/lib/data
- app_config:/etc/config
environment:
- DB_HOST=db
- DB_PORT=5432
depends_on:
- db
restart: unless-stopped
networks:
- frontend
db:
image: postgres:15
container_name: my-db
volumes:
- db_data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=secret
restart: unless-stopped
networks:
- frontend
volumes:
app_config:
db_data:
networks:
frontend:
🧹 清理命令
| 命令 |
说明 |
docker system prune -f |
一键清理:停止的容器 + 悬空镜像 + 未用网络 + 构建缓存 |
docker system prune -a -f |
同上,额外删除所有未使用镜像(⚠️ 慎用) |
docker system prune -a --volumes -f |
全清,包括数据卷(⚠️⚠️ 危险) |
docker system df |
查看 Docker 磁盘占用 |
docker container prune -f |
清除已停止的容器 |
docker image prune -f |
清除悬空镜像 |
docker volume prune -f |
清除未使用的数据卷 |
docker network prune -f |
清除未使用的网络 |
🔧 实用技巧
进入运行中的容器
docker exec -it <容器> /bin/bash
# 如果没有 bash:
docker exec -it <容器> /bin/sh
容器间文件拷贝
# 容器 → 宿主机
docker cp <容器>:<容器路径> <宿主路径>
# 宿主机 → 容器
docker cp <宿主路径> <容器>:<容器路径>
查看容器资源占用
docker stats --no-stream # 一次性输出,不持续刷新
导出/导入容器
docker export <容器> -o <文件名>.tar # 导出容器为 tar
docker import <文件名>.tar <新镜像名> # 导入为镜像
重命名容器
docker rename <旧名> <新名>
查看容器运行时的完整命令
docker ps --no-trunc --format "{{.Names}}: {{.Command}}"
⚡ 一行命令集合
# 删除所有已停止的容器
docker rm $(docker ps -aq --filter status=exited)
# 删除所有镜像
docker rmi $(docker images -q)
# 停止所有运行中的容器
docker stop $(docker ps -q)
# 删除所有容器(含运行中)
docker rm -f $(docker ps -aq)
# 查看所有容器 IP
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
# 按大小排序镜像
docker images --format "{{.Repository}}:{{.Tag}} {{.Size}}" | sort -k2 -h
评论
评论功能即将上线,敬请期待。