# Stop the container
docker stop $CONTAINER
# Create a new image
docker commit $CONTAINER $CONTAINER
# Save image
docker save -o $CONTAINER.tar $CONTAINER
# Save the volumes (use ".tar.gz" if you want compression)
docker-volumes.sh $CONTAINER save $CONTAINER-volumes.tar
# Copy image and volumes to another host
scp $CONTAINER.tar $CONTAINER-volumes.tar $USER@$HOST:
# On the other host:
docker load -i $CONTAINER.tar
docker create --name $CONTAINER [<PREVIOUS CONTAINER OPTIONS>] $CONTAINER
# Load the volumes
docker-volumes.sh $CONTAINER load $CONTAINER-volumes.tar
# Start container
docker start $CONTAINER
ps:“Our container CONTAINER_NAME has a mounted volume at '/var/home'”(您必须检查您的容器以指定其卷路径:# docker inspect CONTAINER_NAME) 1.++保存其音量:我们将使用一个ubuntu映像来做这件事。
mkdir备份
docker run --rm --volumes-from CONTAINER_NAME -v ${pwd}/backup:/backup ubuntu bash -c“cd /var/home && tar cvf/backup/volume_backup.tar."*
7条答案
按热度按时间z6psavjg1#
或者,如果您不希望推送到存储库:
1.将容器导出到tarball
1.将tarball移动到新机器
1.导入回来
也可以按如下方式移动容器:
1.在源主机上停止容器。
如果使用
-v
启动容器,则必须将挂载的文件和目录复制到新主机。1.提交更改
1.将容器保存到图像
1.将x文件复制到新的目标主机。
1.连接到目标主机。
1.加载新图像
1.运行新映像
请注意,可能需要
-v
来引用目标主机上已装载的文件和目录,以镜像源主机。6ioyuze22#
您不能将正在运行的Docker容器从一个主机移动到另一个主机。
您可以使用
docker commit
将容器中的更改提交到映像,将映像移动到新主机上,然后使用docker run
启动新容器。这将保留应用程序在容器中创建的所有数据。**注意:**不保留存储在卷内的数据;您需要手动将数据卷移动到新主机。
t40tm48m3#
在经历了大量令人困惑的手册和令人困惑的教程之后,由于Docker显然是在我写peak of inflated expectations的时候,最终对我起作用的是:
1.将docker镜像保存到archive:
docker save image_name > image_name.tar
1.在另一台机器上复制
1.在另一台docker机器上,按以下方式运行docker load:
cat image_name.tar | docker load
导出和导入,如在另一个答案中所建议的那样,不会导出端口和变量,这可能是您的容器运行所必需的。当您尝试在另一台机器上加载它时,您可能会得到类似**“未指定命令”**等内容。
因此,保存和导出之间的区别在于,保存命令保存整个图像以及历史和元数据,而导出命令仅导出文件结构(没有历史或元数据)。
不用说的是,如果你已经在你正在做导入的docker hypervisor上使用了这些端口,那么其他的docker容器,你将最终陷入冲突,你将不得不重新配置暴露的端口。
注意:为了使用docker移动数据,您可能在某个地方拥有持久存储,它也应该与容器一起移动。
lstz6jyr4#
使用此脚本:https://github.com/ricardobranco777/docker-volumes.sh
这 * 确实 * 将数据保存在卷中。
示例用法:
q8l4jmvw5#
Docker文档:
docker export
不会导出与容器关联的卷的内容。如果卷装载在容器中现有目录的顶部,则docker export
将导出 * 底层 * 目录的内容,而不是卷的内容。有关导出卷中数据的示例,请参阅用户指南中的备份、还原或迁移数据卷。093gszye6#
我尝试了很多解决方案,这是一个为我工作:
1.将容器提交/保存到新镜像:
1.++提交容器:
docker stop
docker commit CONTAINER_NAME
docker保存--output IMAGE_NAME. tar IMAGE_NAME:TAG*
ps:“Our container CONTAINER_NAME has a mounted volume at '/var/home'”(您必须检查您的容器以指定其卷路径:# docker inspect CONTAINER_NAME)
1.++保存其音量:我们将使用一个ubuntu映像来做这件事。
mkdir备份
docker run --rm --volumes-from CONTAINER_NAME -v ${pwd}/backup:/backup ubuntu bash -c“cd /var/home && tar cvf/backup/volume_backup.tar."*
现在,当您查看${pwd}/backup时,您会发现我们的卷是tar格式的。
到目前为止,我们有conatainer的映像'IMAGE_NAME.tar'和它的卷'volume_backup.tar'。
现在,您可以在新主机上重新创建相同的旧容器。
4szc88ey7#
docker导出|gzip〉.tar.gz
new host gunzip〈/mnt/usb/. tar. gz|docker import -
docker run -i -p 80:80 /bin/bash