在Docker中进行容器操作是日常开发运维的核心技能,以下是系统化的操作方法总结,涵盖全生命周期管理:
一、容器生命周期操作
1. 创建与启动容器
- 交互式容器(退出自动停止):
bash
docker run -it --name my_container ubuntu:20.04 /bin/bash
- 后台守护容器:
bash
docker run -d --name web_server -p 8080:80 nginx:alpine
- 带资源限制的容器:
bash
docker run -d --memory=1g --cpus=2 --name limited_container redis
- 启停操作链:
bash
docker start my_container && \
docker stop my_container && \
docker restart my_container
- 暂停/恢复(冻结进程):
bash
docker pause my_container
docker unpause my_container
二、容器交互与调试
1. 进入运行中容器
- 推荐exec方式(避免影响主进程):
bash
docker exec -it web_server /bin/sh
- 文件系统检查:
bash
docker cp web_server:/etc/nginx/nginx.conf ./nginx.conf.bak
- 动态日志查看:
bash
docker logs -f --tail 100 web_server
- 性能监控仪表盘:
bash
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
三、容器配置管理
1. 网络配置
- 端口映射验证:
bash
docker port web_server 80
- 自定义网络:
bash
docker network create app_net && \
docker run -d --net=app_net --name service1 nginx
- 数据卷操作:
bash
docker volume create db_vol && \
docker run -d -v db_vol:/var/lib/mysql mysql:8.0
四、批量操作技巧
1. 容器筛选
- 状态过滤:
bash
docker ps -a --filter "status=exited" --format "{{.ID}}: {{.Status}}"
- 标签查询:
bash
docker ps --filter "label=env=prod"
- 停止所有运行中容器:
bash
docker stop $(docker ps -q)
- 清理已退出容器:
bash
docker container prune --filter "until=24h"
五、高级运维场景
1. 容器检查
- 详细配置导出:
bash
docker inspect web_server | jq '.[].HostConfig'
- 差异分析:
bash
docker diff web_server
- 动态配置重载:
bash
docker kill -s HUP web_server
- 版本迁移:
bash
docker commit web_server web_server:v2 && \
docker run -d --name web_v2 web_server:v2
最佳实践建议: 1. 始终使用--rm参数进行临时测试 2. 生产环境推荐使用docker-compose进行编排 3. 敏感配置应使用secrets而非环境变量 4. 考虑使用HealthCheck进行自愈配置
故障排查流程: 1. docker logs 查看应用日志 2. docker exec 进入容器诊断 3. docker inspect 检查配置 4. docker stats 监控资源 5. 最后考虑docker restart
这些方法覆盖了90%的日常容器操作场景,根据实际需求组合使用可显著提升容器管理效率。