Docker容器的使用与常见问题(下)
一、容器生命周期管理
1. 容器快照操作
# 导出容器文件系统为tar包
docker export my-container > my-container.tar
# 从tar包创建新镜像
cat my-container.tar | docker import - my-image:v1
注意事项:
- ⚠️
export/import
vssave/load
差异:- 容器导出:仅保存当前文件系统状态(无元数据)
- 镜像保存:保留完整镜像层和历史记录
- 生产环境建议优先使用
docker commit + docker save
组合
二、容器状态监控
1. 基础状态查看
# 查看运行中容器
docker ps
# 查看所有容器(含已停止)
docker ps -a
# 过滤特定状态容器
docker ps -f status=exited
2. 高级监控工具
# 查看容器进程树
docker top my-container
# 实时资源监控(CPU/MEM/IO)
docker stats my-container
监控技巧:
- 使用
watch
命令定时刷新:watch -n 5 docker stats
- 结合
grep
过滤关键指标:docker stats | grep -E 'CONTAINER|my-app'
三、容器配置操作
1. 文件系统管理
# 双向文件复制
docker cp my-container:/path/file ./local_dir
docker cp local_file my-container:/container_path
# 查看文件系统变更
docker diff my-container
变更类型标识:
- A: 新增文件
- C: 修改文件
- D: 删除文件
2. 网络配置查看
# 查看端口映射关系
docker port my-container
3. 动态资源调整
# 实时修改资源限制
docker update --memory 512M --cpus 1.5 my-container
注意事项:
- 调整后需通过
docker inspect
验证生效 - 内存限制修改可能导致应用重启
四、常见问题
Docker 容器常见问题速查表
问题现象 | 快速检测命令 | 关键解决方案 |
---|---|---|
容器意外退出 | docker logs my-container | 保持前台进程运行 |
端口冲突 | docker ps --format "table {{.Ports}}" | 更换主机端口或停止占用进程 |
数据丢失 | docker volume ls | 使用命名卷或绑定目录 |
权限不足 | docker exec -u root my-container sh | 调整用户权限或使用特权模式 |
资源占用过高 | docker stats my-container | 设置内存/CPU限制 |
五、命令速查手册
1. 常用命令对照表
操作类型 | 命令组合 | 典型用例 |
---|---|---|
环境迁移 | export + import | 容器快照导出导入 |
状态监控 | ps + top + stats | 实时性能分析 |
文件操作 | cp + diff | 配置热更新与变更追踪 |
网络管理 | port + network inspect | 端口映射验证 |
建议
1. 优先使用镜像保存(commit + save)替代容器导出
2.动态调整资源时需预留10%-20%的缓冲空间
3. 定期清理 docker ps -a
中的僵尸容器
4. 通过 docker diff
监控异常文件变更
下期预告
《Docker仓库介绍》将涵盖:
- 公共镜像
- 第三方镜像市场
- 私有仓库
- 欢迎在评论区留言您遇到的典型问题,我们将选取典型问题进行专题讲解!