1. Docker核心命令全景解析
作为容器化技术的标杆工具,Docker的命令行操作是每个开发者必须掌握的生存技能。经过多年容器化实践,我整理出这套覆盖全场景的Docker命令手册,包含23个高频命令及其组合用法,特别适合需要快速上手容器技术的开发者和运维人员。这些命令经过生产环境验证,可解决80%以上的日常容器管理需求。
重要提示:所有命令示例均基于Docker 20.10+版本,部分参数在旧版本可能不兼容。建议先执行
docker version确认客户端和服务端版本。
1.1 容器生命周期管理
容器是Docker的核心运行单元,以下命令贯穿容器从创建到销毁的完整生命周期:
bash复制# 启动新容器(-d后台运行,--name指定别名,-p端口映射)
docker run -d --name my_nginx -p 8080:80 nginx:latest
# 查看运行中容器(-a显示全部容器)
docker ps -a
# 停止/启动/重启容器
docker stop my_nginx
docker start my_nginx
docker restart my_nginx
# 删除已停止容器(-f强制删除运行中容器)
docker rm my_nginx
组合技实践:当需要完全重置容器时,可以串联使用命令:
bash复制docker stop my_nginx && docker rm my_nginx
1.2 镜像管理深度指南
镜像是容器的静态模板,管理镜像是Docker操作的基础:
bash复制# 拉取镜像(默认从Docker Hub获取)
docker pull ubuntu:20.04
# 查看本地镜像列表
docker images
# 删除镜像(需先删除依赖容器)
docker rmi ubuntu:20.04
# 镜像搜索(支持通配符)
docker search mysql*
镜像加速技巧:国内用户可通过配置镜像加速器提升下载速度,在/etc/docker/daemon.json中添加:
json复制{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
1.3 容器运维监控命令
实时掌握容器运行状态是运维的关键:
bash复制# 查看容器日志(-f实时追踪,--tail显示最后N行)
docker logs -f --tail 100 my_nginx
# 查看容器资源占用
docker stats my_nginx
# 进入容器内部(/bin/bash可替换为其他shell)
docker exec -it my_nginx /bin/bash
# 容器内外文件拷贝
docker cp my_nginx:/etc/nginx/nginx.conf ./nginx.conf.bak
排错经验:当容器异常退出时,先通过docker logs检查日志,再考虑使用docker export导出容器文件系统进行深度分析。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 高级操作与网络管理
2.1 容器网络配置实战
Docker的网络模型直接影响服务的连通性:
bash复制# 创建自定义网络(优于默认的bridge)
docker network create my_network
# 将容器连接到指定网络
docker network connect my_network my_nginx
# 查看网络详情
docker network inspect my_network
# 容器间通信测试(需在同一网络)
docker exec -it my_nginx ping another_container
网络方案选型:
- bridge:默认隔离网络,适合单机部署
- host:直接使用主机网络,性能最佳
- overlay:支持跨主机通信,适合集群环境
2.2 数据持久化方案
容器本身是临时的,重要数据必须持久化:
bash复制# 创建数据卷
docker volume create db_data
# 挂载数据卷到容器
docker run -d -v db_data:/var/lib/mysql mysql:8.0
# 绑定主机目录(开发环境常用)
docker run -d -v /host/path:/container/path nginx
# 查看卷使用情况
docker volume inspect db_data
数据管理建议:
- 生产环境优先使用命名卷(named volume)
- 开发调试可用绑定挂载(bind mount)
- 敏感数据避免直接挂载,使用
docker secret
3. 生产环境必备命令
3.1 容器编排基础
即使不使用Kubernetes,单机编排也能提升效率:
bash复制# 使用Docker Compose(需单独安装)
docker-compose up -d
# 查看服务状态
docker-compose ps
# 重建服务(代码更新后常用)
docker-compose up -d --build
Compose文件示例:
yaml复制version: '3'
services:
web:
image: nginx:alpine
ports:
- "80:80"
db:
image: postgres:13
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
3.2 系统级维护命令
维护Docker环境本身的命令同样重要:
bash复制# 清理无用资源(谨慎使用)
docker system prune
# 查看磁盘使用详情
docker system df
# 显示运行中进程
docker top my_nginx
# 更新容器配置(如重启策略)
docker update --restart=always my_nginx
系统优化建议:
- 定期执行
docker system prune -a --volumes清理空间 - 限制容器资源使用:
--memory=2g --cpus=2 - 为关键容器配置健康检查:
--health-cmd
4. 异常处理与调试技巧
4.1 常见错误解决方案
bash复制# 端口冲突处理(检查占用进程)
netstat -tulnp | grep 8080
# 容器启动失败排查
docker inspect --format='{{.State.Error}}' my_nginx
# 镜像拉取超时(切换镜像源)
docker pull registry.cn-hangzhou.aliyuncs.com/library/nginx
4.2 高级调试手段
bash复制# 查看容器底层信息(JSON格式)
docker inspect my_nginx
# 分析镜像构建历史
docker history nginx:latest
# 实时事件监控
docker events --filter 'container=my_nginx'
诊断流程:
- 检查基础状态:
docker ps -a - 查看详细日志:
docker logs - 分析配置信息:
docker inspect - 进入容器调试:
docker exec
掌握这些命令组合,就能应对大多数Docker管理场景。建议将常用命令保存为shell脚本或Makefile,提升工作效率。对于更复杂的场景,可以考虑编写自定义CLI工具或使用Portainer等可视化工具辅助管理。
