温馨提示×

CentOS Docker如何迁移

小樊
48
2026-08-03 06:22:29
栏目: 智能运维

CentOS 上迁移 Docker,通常指以下几种场景之一。下面按最常见需求给你系统性的迁移方案,你可以对号入座。


一、迁移 Docker 数据目录(最常见 ✅)

适用场景

  • 磁盘空间不足
  • 想把 /var/lib/docker 迁移到新磁盘或新目录

1️⃣ 停止 Docker

systemctl stop docker

2️⃣ 查看当前 Docker 数据目录

docker info | grep "Docker Root Dir"

默认是:

/var/lib/docker

3️⃣ 迁移数据到新目录

例如迁移到 /data/docker

mkdir -p /data/docker
rsync -avzP /var/lib/docker/ /data/docker/

✅ 强烈推荐 rsync,比 cp 更安全

4️⃣ 修改 Docker 配置

编辑(不存在就新建):

vim /etc/docker/daemon.json

添加或修改:

{
  "data-root": "/data/docker"
}

5️⃣ 启动 Docker 并验证

systemctl start docker
docker info | grep "Docker Root Dir"

✅ 输出应为:

Docker Root Dir: /data/docker

二、迁移 Docker 到另一台 CentOS 服务器(整机迁移)

方案 1:迁移镜像 + 容器(推荐)

1️⃣ 导出镜像

docker images
docker save nginx:latest > nginx.tar

2️⃣ 拷贝到新服务器

scp nginx.tar root@new_server:/root/

3️⃣ 新服务器导入

docker load < nginx.tar

⚠️ 容器状态不会保留(需重新 run)


方案 2:直接拷贝整个 Docker 目录(需停机)

旧服务器

systemctl stop docker
tar czf docker.tar.gz /var/lib/docker

新服务器

systemctl stop docker
rm -rf /var/lib/docker
tar xzf docker.tar.gz -C /
systemctl start docker

✅ 容器、镜像、volume 全部保留


三、迁移 Docker 容器(含数据)

1️⃣ 使用 volume(推荐)

查看 volume:

docker volume ls

迁移 volume 目录:

/var/lib/docker/volumes/

2️⃣ 使用容器提交为新镜像

docker commit my_container my_image
docker save my_image > my_image.tar

四、迁移 Docker Compose 项目

1️⃣ 拷贝项目目录

scp -r /opt/myapp root@new_server:/opt/

2️⃣ 新服务器启动

cd /opt/myapp
docker-compose up -d

五、迁移 Docker 到新磁盘(LVM / 云盘)

常见步骤

  1. 新磁盘挂载到 /mnt/newdisk
  2. 停止 docker
  3. rsync /var/lib/docker/mnt/newdisk/docker
  4. 修改 daemon.json
  5. 重新启动 docker

六、迁移后常见问题

❓ 容器起不来

docker logs 容器名
journalctl -u docker

❓ SELinux 问题(CentOS 常见)

setenforce 0
# 或
chcon -Rt svirt_sandbox_file_t /data/docker

七、迁移建议总结 ✅

场景 推荐方案
磁盘满了 迁移 data-root
换服务器 镜像导出 / 全量拷贝
保留容器状态 拷贝 /var/lib/docker
生产环境 volume + compose

如果你愿意,可以告诉我:

  • 同机迁移还是跨服务器?
  • 是否使用 Docker Compose?
  • CentOS 7 还是 8 / Stream?

我可以给你 精确到命令级别 的迁移方案。

0