ubuntu docker容器怎么迁移
导读:Ubuntu 下 Docker 容器迁移实操指南 常见迁移场景与选择 同机迁移 Docker 根目录(/var/lib/docker)到新磁盘或新路径,适用于磁盘扩容或分区调整。 跨机迁移容器到另一台 Ubuntu 主机,适用于更换服务器...
Ubuntu 下 Docker 容器迁移实操指南
常见迁移场景与选择
- 同机迁移 Docker 根目录(/var/lib/docker)到新磁盘或新路径,适用于磁盘扩容或分区调整。
- 跨机迁移容器到另一台 Ubuntu 主机,适用于更换服务器或灾备演练。
- 迁移方式以镜像/容器导出导入与数据卷备份恢复为主,必要时结合 Docker Compose 重建运行参数。
同机迁移 Docker 存储目录
- 步骤
- 查看当前 Docker 根目录
docker info | grep “Docker Root Dir” - 停止 Docker 服务
sudo systemctl stop docker - 同步数据到新位置(推荐 rsync 保留权限与属性)
sudo rsync -aP /var/lib/docker/ /data/docker/ - 修改配置文件 /etc/docker/daemon.json,指定新的 data-root
{ “data-root”: “/data/docker” } 如文件不存在则新建;如已有其他配置,请在 JSON 对象中追加逗号后新增该键值。 - 启动 Docker 并验证
sudo systemctl start docker
docker info | grep “Docker Root Dir” # 应显示新路径
- 查看当前 Docker 根目录
- 回滚要点
若异常,可恢复 daemon.json 并指向旧目录后重启;或保留旧目录一段时间待验证无误再清理。
跨机迁移容器到另一台 Ubuntu 主机
- 方式 A 镜像与容器导出导入(简单通用)
- 在源机为运行中的容器生成新镜像
docker commit < 容器ID或名称> myapp:migrate - 导出镜像
docker save -o myapp_migrate.tar myapp:migrate - 将镜像传输到目标机
scp myapp_migrate.tar user@目标IP:/path/ - 在目标机导入镜像
docker load -i /path/myapp_migrate.tar - 参考原容器启动参数运行(端口、卷、环境变量等保持一致)
docker run -d --name myapp -p 80:80 -v /data:/app myapp:migrate
- 在源机为运行中的容器生成新镜像
- 方式 B 容器文件系统导出导入(不包含镜像历史与元数据)
- 源机导出容器文件系统
docker export < 容器ID> -o container_fs.tar - 目标机导入为镜像
docker import container_fs.tar myapp:imported - 按原参数启动
docker run -d --name myapp myapp:imported
- 源机导出容器文件系统
- 方式 C 数据卷备份恢复(适用于数据库、业务数据等持久化)
- 备份卷(以卷名为 my_volume 为例)
docker run --rm -v my_volume:/data -v $(pwd):/backup ubuntu tar cvf /backup/vol_backup.tar -C /data . - 将备份文件传到目标机并恢复
docker run --rm -v my_volume:/data -v $(pwd):/backup ubuntu tar xvf /backup/vol_backup.tar -C /data
- 备份卷(以卷名为 my_volume 为例)
- 方式 D 使用 Docker Compose(推荐用于多容器应用)
- 在源机导出编排文件
docker-compose config > docker-compose.yml - 将镜像保存/推送至仓库(如需要)并拷贝 compose 文件到目标机
- 目标机启动
docker-compose up -d
- 在源机导出编排文件
- 迁移后一致性校验
核对镜像、容器、卷、端口映射与关键数据是否完整;必要时比对应用日志与业务自检接口。
注意事项与最佳实践
- 迁移前务必完整备份,先停机再拷贝,避免写入导致的数据不一致;跨机传输建议使用 scp/rsync 校验完整性。
- 区分镜像与容器的导出导入差异:docker save/load 保留镜像层与历史,适合复用与分发;docker export/import 仅导出容器文件系统快照,更轻量但丢失镜像元数据与构建历史。
- 有状态服务(数据库等)优先迁移数据卷或采用应用层备份恢复;仅迁移镜像/容器文件系统无法保证数据一致性。
- 迁移完成后用 docker ps -a、docker images、docker volume ls 与业务自检确认运行状态与数据可用性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu docker容器怎么迁移
本文地址: https://pptw.com/jishu/789217.html
