Docker 常用命令速查
本文按操作对象分组整理 Docker CLI 常用命令。
命令构成解析
docker pull docker.io/library/nginx:latest
# │ │ │ │ │ │
# │ │ │ │ │ └── tag(版本标签)
# │ │ │ │ └── repository(镜像名)
# │ │ │ └── namespace(命名空间,官方为 library)
# │ │ └── registry(仓库地址)
# │ └── 子命令(pull / run / build ...)
# └── Docker CLI💡
docker run nginx等价于docker pull nginx+docker create nginx+docker start <id>。如果本地不存在该镜像,Docker 会自动从远程拉取。
镜像管理
# 列出本地所有镜像
docker images
# 或
docker image ls
# 拉取镜像
docker pull image_name
docker pull image_name:tag # 指定标签
docker pull --platform=linux/amd64 nginx # 指定 CPU 架构
# 删除镜像
docker rmi <image_id> # 删除单个
docker rmi $(docker images -q) # 删除全部
# 查看镜像详细信息
docker image inspect <image_id>
# 查看镜像构建历史(层信息)
docker image history <image_id>
# 为镜像打新标签
docker tag <source_image> <target_image>:<tag>
# 保存镜像为 tar 文件
docker save -o nginx.tar nginx:latest
# 从 tar 文件加载镜像
docker load -i nginx.tar
# 清理无用镜像
docker image prune -a容器管理
运行容器
# 基础运行
docker run image_name
# 后台运行(detached mode)
docker run -d image_name
# 端口映射:外部端口:容器内端口
docker run -p 8080:80 nginx
# 挂载卷(绑定挂载)
docker run -v /host/path:/container/path image_name
# 命名卷挂载
docker run -v volume_name:/container/path image_name
# 传递环境变量(可多次使用)
docker run -e KEY=value -e DB_HOST=localhost image_name
# 指定容器名称
docker run -d --name my_nginx nginx
# 交互模式 + 自动清理
docker run -it --rm alpine
# 重启策略
docker run --restart always nginx # 总是重启
docker run --restart unless-stopped nginx # 除非手动停止
docker run --restart on-failure:3 nginx # 失败时重启,最多 3 次
# 资源限制
docker run --memory 512m --cpus 1.5 nginx # 内存 512MB,1.5 核 CPU
# 添加 hosts 记录
docker run --add-host db.internal:192.168.1.100 nginx
# 完整示例
docker run -d \
--name my_app \
-p 8080:80 \
-v /data/html:/usr/share/nginx/html \
-e NGINX_HOST=example.com \
--restart unless-stopped \
nginx:1.25容器生命周期
# 查看运行中的容器
docker ps
docker ps -a # 包括已停止的
# 创建但不启动
docker create image_name
# 启动已停止的容器(之前的参数保持不变)
docker start <container_name|id>
# 停止容器
docker stop <container_name|id>
# 强制停止(等价于 kill -9)
docker kill <container_name|id>
# 重启容器
docker restart <container_name|id>
# 暂停/恢复容器(冻结/解冻进程)
docker pause <container_name|id>
docker unpause <container_name|id>
# 删除容器
docker rm <container_id> # 删除已停止的
docker rm -f <container_id> # 强制删除(即使运行中)
# 删除所有已停止的容器
docker container prune容器信息
# 查看容器详细信息(包括启动参数、网络、挂载等)
docker inspect <container_id>
# 查看日志
docker logs <container_id>
docker logs -f <container_id> # 实时跟踪
docker logs --tail 50 <container_id> # 最后 50 行
docker logs --since 30m <container_id> # 最近 30 分钟
# 查看容器内进程
docker top <container_id>
# 查看资源使用统计
docker stats
docker stats <container_id>
# 查看容器端口映射
docker port <container_id>容器内部操作
# 在运行中的容器内执行命令
docker exec <container_id> <command>
# 进入容器交互式 Shell
docker exec -it <container_id> /bin/sh
docker exec -it <container_id> /bin/bash # 如果容器有 bash
# 拷贝文件(容器 ↔ 宿主机)
docker cp <container_id>:/path/file ./host_path # 从容器拷出
docker cp ./host_file <container_id>:/path/ # 拷入容器
# 查看容器文件系统变更
docker diff <container_id>卷管理
# 创建卷
docker volume create volume_name
# 查看卷信息
docker volume inspect volume_name
# 查看卷列表
docker volume ls
# 删除卷
docker volume rm volume_name
# 删除所有未使用的卷
docker volume prune -a
# 挂载卷运行
docker run -v my_volume:/app/data nginx
# 只读挂载
docker run -v /host/data:/app/data:ro nginx网络管理
# 查看所有网络
docker network ls
# 创建网络
docker network create my_network
# 查看网络详情
docker network inspect my_network
# 将运行中的容器连接到网络
docker network connect my_network <container_id>
# 断开容器与网络的连接
docker network disconnect my_network <container_id>
# 删除网络
docker network rm my_network
# 删除未使用的网络
docker network prune镜像构建与仓库
# 构建镜像
docker build -t my_app:1.0 .
docker build -t my_app:1.0 -f Dockerfile.prod . # 指定 Dockerfile
# 登录 Registry
docker login
docker login registry.example.com
# 推送镜像
docker push my_username/my_app:1.0
# 登出
docker logout系统管理
# 查看 Docker 系统信息
docker info
# 查看磁盘使用情况
docker system df
# 一键清理:删除停止的容器、未使用的网络、悬空镜像、构建缓存
docker system prune
docker system prune -a --volumes # 包括未使用的镜像和卷
# 查看 Docker 事件
docker events常用命令速查表
| 操作 | 命令 |
|---|---|
| 搜索镜像 | docker search nginx |
| 运行并进入 Shell | docker run -it --rm alpine sh |
| 查看最后 100 行日志 | docker logs --tail 100 <id> |
| 查看环境变量 | docker exec <id> env |
| 提交容器为镜像 | docker commit <id> my_image:v1 |
| 导出容器文件系统 | docker export <id> > container.tar |
| 导入为镜像 | docker import container.tar my_image:v1 |
| 查看端口映射 | docker port <id> |