以下是对 Docker 核心命令的 系统化整理,包含 详细中文注释 和 参数说明,并补充了 卷(Volume) 和 网络(Network) 的配置细节,适合作为日常参考手册。
一、镜像管理命令
1. 构建镜像
docker build [OPTIONS] PATH
-t
:指定镜像名称和标签(tag)--build-arg
:设置构建时参数(如环境变量)--no-cache
:禁用缓存以确保全新构建--pull
:始终尝试拉取最新基础镜像
示例:
docker build -t myapp:1.0 --build-arg ENV_NAME=dev .
2. 拉取/推送镜像
docker pull [OPTIONS] NAME[:TAG]
docker push [OPTIONS] NAME[:TAG]
--all-tags
或-a
:拉取所有标签(仅适用于 pull)--disable-content-trust
:禁用内容信任(默认启用)
示例:
docker pull nginx:latest
docker push myapp:1.0
3. 查看和删除镜像
docker images [OPTIONS]
docker rmi [OPTIONS] IMAGE [IMAGE...]
-a
:显示所有镜像(含中间层)--filter
:过滤条件(如dangling=true
删除无标签镜像)
示例:
docker images -a
docker rmi myapp:1.0
二、容器管理命令
1. 创建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-d
:后台运行(分离模式)--name
:指定容器名称-p
:端口映射(格式:主机端口:容器端口
)-v
:挂载卷(格式:主机路径:容器路径
)--network
:指定网络模式(如host
、bridge
)--env
或-e
:设置环境变量--rm
:容器退出后自动删除
示例:
docker run -d --name web -p 80:80 -v /data:/usr/share/nginx/html nginx
2. 容器生命周期控制
docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
docker kill [OPTIONS] CONTAINER [CONTAINER...]
--time
或-t
:停止容器前等待的秒数(默认 10 秒)
示例:
docker stop web
docker restart web
3. 查看容器状态
docker ps [OPTIONS]
docker inspect [OPTIONS] CONTAINER|IMAGE|VOLUME
-a
:显示所有容器(含停止的)-f
:过滤条件(如status=running
)--format
:自定义输出格式(如{{.Status}}
)
示例:
docker ps -a -f "status=exited"
docker inspect web
4. 容器交互与调试
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker logs [OPTIONS] CONTAINER
docker top [OPTIONS] CONTAINER
-it
:交互式终端(常用于 exec)-f
:实时输出日志(类似 tail -f)--tail
:显示最后 N 条日志
示例:
docker exec -it web sh
docker logs -f --tail 100 web
三、卷(Volume)管理
1. 创建卷
docker volume create [OPTIONS] VOLUME_NAME
--driver
:指定卷驱动(默认 local)--opt
:驱动特定选项(如type=tmpfs
)
示例:
docker volume create mydata
2. 挂载卷
docker run -v mydata:/path/in/container image_name
--mount
:更灵活的挂载方式(支持多种类型)type=volume|bind|tmpfs
source
:源路径(卷名或主机路径)destination
:容器内目标路径
示例:
docker run --mount type=volume,source=mydata,destination=/data alpine ls /data
3. 卷清理
docker volume ls
docker volume rm VOLUME_NAME
docker volume prune
prune
:删除无用卷(未被任何容器使用的卷)
四、网络(Network)管理
1. 创建自定义网络
docker network create [OPTIONS] NETWORK_NAME
--driver
:指定网络驱动(默认 bridge)--subnet
:自定义子网(如192.168.0.0/24
)
示例:
docker network create --driver bridge --subnet 192.168.1.0/24 mynet
2. 管理容器网络
docker network connect [OPTIONS] NETWORK CONTAINER
docker network disconnect [OPTIONS] NETWORK CONTAINER
connect
:将容器加入网络disconnect
:将容器移出网络
示例:
docker network connect mynet web
3. 查看网络信息
docker network ls
docker network inspect NETWORK_NAME
inspect
:显示网络详细信息(如容器 IP、子网等)
五、资源限制与安全
1. 资源限制
docker run --memory="200m" --cpus="0.5" image_name
--memory
:内存限制(如200m
表示 200MB)--cpus
:CPU 份额(如0.5
表示 50% 的单核 CPU)
2. 安全加固
docker run --security-opt=no-new-privileges --user=1000:1000 image_name
--security-opt=no-new-privileges
:禁止提升权限--user
:以非 root 用户运行容器(提升安全性)
六、日志与监控
1. 实时监控容器状态
docker stats [OPTIONS] [CONTAINER...]
--all
:显示所有容器(默认只显示运行中的)--format
:自定义输出格式
示例:
docker stats --all
2. 日志分析
docker logs -f --tail 100 container_name
-f
:实时输出日志(类似 tail -f)--tail
:显示最后 N 条日志
七、其他实用命令
1. 清理无用资源
docker system prune -a
-a
:删除所有未使用的镜像、容器、卷和网络
2. 容器事件监控
docker events --since 1h
--since
:查看最近一段时间的事件(如1h
表示过去 1 小时)
3. 获取容器 IP 地址
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
八、常见问题排查命令
1. 查看容器内部文件系统
docker exec -it container_name sh
2. 检查卷挂载情况
docker inspect container_name | grep Mounts
3. 网络连通性测试
docker exec -it container_name ping other_container_ip
总结
通过以上整理,您可掌握 Docker 的全链路操作命令,涵盖镜像构建、容器管理、卷与网络配置、资源限制、安全加固等核心内容。建议结合实际场景,灵活组合命令,例如:
# 构建并运行带卷和网络的容器
docker build -t myapp:1.0 .
docker network create mynet
docker volume create appdata
docker run -d --name app --network mynet -v appdata:/data myapp:1.0
如需进一步深入,可参考 Docker CLI 官方文档 获取完整参数说明。