要将一个 Docker 容器移植到其他机器,可以通过以下几种方式实现,取决于你是想移植 镜像 还是 容器的运行状态和数据。
🚀 方案 1:导出容器/镜像并在目标机器导入
适合情况:想要将当前容器的运行状态(含数据)迁移过去,或目标机器无法访问原镜像仓库。
步骤:
✅ 方法 A:导出容器(包括文件系统)
- 导出容器为 tar 文件(假设容器名叫
mycontainer
):
docker export mycontainer > mycontainer.tar
- 复制文件到目标机器(可以用
scp
、rsync
、U盘等方式):
scp mycontainer.tar user@target_host:/path/
- 在目标机器上导入为镜像:
docker import /path/mycontainer.tar mycontainer-image
- 基于新镜像运行容器:
docker run -it mycontainer-image
✅ 方法 B:导出镜像(推荐,如果只是想转移镜像)
- 找到容器使用的镜像:
docker ps --filter name=mycontainer
- 导出镜像为 tar 文件:
docker save -o myimage.tar imagename:tag
- 拷贝到目标机器并加载:
docker load -i myimage.tar
- 启动新容器:
docker run -it imagename:tag
🧊 方案 2:使用 Docker Compose + Volume 备份
适合情况:有多个容器组成服务(比如用 docker-compose
管理),并希望数据也迁移过去。
- 导出
docker-compose.yml
文件和相关配置。 - 备份挂载的卷数据:
- 找出 volume 挂载位置(或者直接使用
docker volume ls
和docker volume inspect
)。 - 打包备份卷目录。
- 在目标机器上还原卷数据并启动 Compose:
docker-compose up -d
📝 注意事项
docker export/import
会丢失容器的元数据(比如端口映射、环境变量)。- 使用
docker save/load
能完整保留镜像内容(推荐)。 - 如果容器依赖挂载卷,请手动同步对应卷的数据。
容器 + 数据 还是只是 镜像,都可以保存,移植