Docker 命令速查
3.1 镜像命令
# 拉取镜像
docker pull nginx
docker pull nginx:1.25
docker pull nginx@sha256:abc123...
# 列出本地镜像
docker images
docker images -a # 包含中间层
# 搜索镜像
docker search nginx
# 镜像详情
docker image inspect nginx:latest
# 删除镜像
docker image rm nginx:latest
docker rmi nginx:latest # 简写
# 清理悬空镜像(dangling images)
docker image prune
# 清理所有未使用镜像
docker image prune -a
# 给镜像打标签
docker tag nginx:latest myregistry/nginx:v1.0
# 构建镜像
docker build -t myapp:latest .
docker build -t myapp:v1 -f Dockerfile.prod .
docker build --no-cache -t myapp:latest .
docker build --build-arg VERSION=1.0 -t myapp .
# 导出/导入镜像(tar 包)
docker save -o nginx.tar nginx:latest
docker load -i nginx.tar
# 推送镜像
docker login
docker push myregistry/nginx:v1.0
3.2 容器命令
# === 运行 ===
docker run -it alpine sh # 交互式运行
docker run -d --name web nginx # 后台运行
docker run --rm alpine echo "hello" # 运行后自动删除
docker run -d -p 8080:80 nginx # 端口映射
docker run -d -p 8080:80 -p 8443:443 nginx # 多端口
docker run -d -P nginx # 随机端口映射
docker run -e MY_VAR=hello alpine env # 环境变量
docker run --memory=512m --cpus=1.0 alpine # 资源限制
docker run -d -v /host/path:/container/path nginx # 挂载目录
docker run -d -v mydata:/data nginx # 挂载卷
docker run --user 1000:1000 alpine # 指定用户
docker run --network mynet alpine # 指定网络
docker run --restart unless-stopped nginx # 重启策略
# === 管理 ===
docker ps # 运行中的容器
docker ps -a # 所有容器
docker ps -s # 显示大小
docker ps -q # 只显示 ID
docker stop web # 停止(发 SIGTERM)
docker stop -t 5 web # 停止等待 5 秒
docker start web # 启动
docker restart web # 重启
docker rm web # 删除已停止容器
docker rm -f web # 强制删除(包括运行中)
docker container prune # 清理已停止容器
# === 进入容器 ===
docker exec -it web bash # 进入运行中的容器
docker exec -it web sh # Alpine 无 bash 时用 sh
docker exec web cat /etc/nginx/nginx.conf # 执行命令不进入
# === 日志 ===
docker logs web # 查看日志
docker logs -f web # 跟踪日志(tail -f)
docker logs --tail 100 web # 最后 100 行
docker logs --since 1h web # 最近 1 小时
docker logs --timestamps web # 带时间戳
# === 详情 ===
docker inspect web # 完整 JSON 信息
docker inspect --format '{{.State.Pid}}' web # 获取特定字段
docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web
# === 资源 ===
docker stats # 实时资源使用
docker stats --no-stream # 单次快照
docker top web # 容器内进程
# === 文件操作 ===
docker cp web:/etc/nginx/nginx.conf ./ # 从容器复制
docker cp ./index.html web:/usr/share/nginx/html/ # 复制到容器
# === 其他 ===
docker rename old_name new_name # 重命名
docker wait web # 等待容器停止并返回退出码
docker port web # 查看端口映射
docker diff web # 查看容器文件系统变化
docker export web -o container.tar # 导出文件系统
3.3 网络命令
# 列出网络
docker network ls
# 网络详情
docker network inspect bridge
# 创建自定义网络
docker network create mynet
docker network create --driver bridge --subnet 172.28.0.0/16 mynet
# 连接/断开网络
docker network connect mynet web
docker network disconnect mynet web
# 删除网络
docker network rm mynet
# 清理未使用网络
docker network prune
# 启动时指定网络
docker run -d --network mynet --name web nginx
3.4 卷命令
# 创建卷
docker volume create mydata
# 列出卷
docker volume ls
# 卷详情
docker volume inspect mydata
# 删除卷
docker volume rm mydata
# 清理未使用卷
docker volume prune
# 启动时挂载卷
docker run -d -v mydata:/var/lib/mysql mysql
# 启动时挂载目录
docker run -d -v $(pwd)/app:/app node:alpine node server.js
# 只读挂载
docker run -d -v $(pwd)/config:/etc/nginx/nginx.conf:ro nginx
3.5 系统命令
# Docker 磁盘使用
docker system df
docker system df -v # 详细
# 清理所有未使用资源
docker system prune # 容器+网络+悬空镜像
docker system prune -a # + 所有未使用镜像
docker system prune -a --volumes # + 所有未使用卷
# Docker 信息
docker info
docker version
# Docker daemon 日志
journalctl -u docker.service -f
3.6 Compose 命令
# 启动
docker compose up
docker compose up -d # 后台
docker compose up --build # 重新构建
docker compose up -d web # 只启动特定服务
# 停止
docker compose down # 停止并删除容器
docker compose down -v # 同时删除卷
# 查看
docker compose ps # 服务状态
docker compose logs # 所有服务日志
docker compose logs -f web # 跟踪特定服务
docker compose config # 验证配置
# 操作
docker compose exec web bash # 进入容器
docker compose restart web # 重启服务
docker compose build # 构建镜像
docker compose pull # 拉取最新镜像
docker compose top # 查看进程
docker compose scale web=3 # 扩展服务(v1)