Docker容器网络迁移不是单独迁移网络,而是确保原有网络配置在新环境准确复现并正常工作。它伴随整体迁移发生,需根据同主机路径迁移、跨服务器迁移、运行时变更(如Docker→Containerd/Podman)三种场景,分别更新data-root、重建自定义网络、适配CNI或端口规则。

一、同主机路径迁移(如 /mnt/docker → /mntd/docker)
这是最常见的本地扩容迁移,网络本身不变化,但需注意 Docker daemon 配置是否依赖旧路径:
- 确认 Docker 的 data-root 是否已更新为新路径(修改
/etc/docker/daemon.json中的"data-root": "/mntd/docker",然后systemctl restart docker) - 原自定义 bridge 网络(如
docker network create mynet)会随数据目录一起复制过去;若用rsync -a全量同步,网络元数据(/mntd/docker/network目录)也会保留,无需重建 - 检查容器启动时是否硬编码了 IP(如
--ip 172.20.0.10)——这类配置在新环境中可能冲突,建议改用--network-alias或 DNS 名称访问 - 端口映射(
-p 8080:80)不受影响,只要宿主机端口空闲即可
二、跨服务器迁移(旧服务器 → 新服务器)
网络需“重建”而非“复制”,重点是保持服务可达性和内部互通性:
- 在新服务器上,用相同名称、子网、网关创建原网络:
docker network create --subnet=172.21.0.0/16 --gateway=172.21.0.1 mynet - 容器启动时显式指定网络和别名:
docker run --network mynet --network-alias redis-srv -d redis,避免依赖默认 bridge 的动态 IP - 若使用 docker-compose,确保
docker-compose.yml中networks:块完整定义(含driver、ipam),并在新环境docker compose up时自动重建 - 外部访问依赖的端口映射、防火墙规则、反向代理(如 Nginx)配置,需同步在新宿主机上部署
三、从 Docker 迁移到 Containerd 或 Podman
运行时变更会带来网络模型差异,需适配而非照搬:
- Docker 默认用内置
bridge驱动;Containerd + nerdctl 默认使用 CNI 插件(如bridge或macvlan),需提前安装并配置 CNI 配置文件(如/etc/cni/net.d/10-containerd-net.conflist) - Podman 的 rootless 模式下,端口映射需加
--publish且宿主端口 ≥ 1024;特权模式才支持-p 80:80 - 容器间通信:Docker 的
--link已废弃,统一改用用户自定义网络 + 服务名解析;Containerd/Podman 同样支持 DNS 解析,只要在同一 CNI 网络内即可互通 - 若原环境用了 Docker 的
host或macvlan网络,需在目标运行时中手动配置对应 CNI 插件并验证网卡绑定与路由


















