Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在主机之间移动docker组合容器集_Docker_Docker Compose - Fatal编程技术网

在主机之间移动docker组合容器集

在主机之间移动docker组合容器集,docker,docker-compose,Docker,Docker Compose,我想将由docker compose管理的由3个docker映像组成的应用程序堆栈从我的开发机器整体移动到生产机器上。我知道有几种方法可以让直接的docker做到这一点: 将图像推送到注册表并将其从生产中拉回来 docker从开发中保存,然后在生产中加载docker 在生产环境中重建映像(宁愿在生产环境中保持依赖关系,因此这不是一个好的选择。) 我目前倾向于先进行docker保存,然后再进行docker加载,但我想知道是否有一种方法可以对docker compose管理的整个容器集执行此操作

我想将由docker compose管理的由3个docker映像组成的应用程序堆栈从我的开发机器整体移动到生产机器上。我知道有几种方法可以让直接的docker做到这一点:

  • 将图像推送到注册表并将其从生产中拉回来
  • docker从开发中保存,然后在生产中加载docker
  • 在生产环境中重建映像(宁愿在生产环境中保持依赖关系,因此这不是一个好的选择。)
我目前倾向于先进行docker保存,然后再进行docker加载,但我想知道是否有一种方法可以对docker compose管理的整个容器集执行此操作


提前感谢

在Compose中没有保存构建在Compose文件中的图像的功能,这是docker客户端的工作(如您在
docker save
docker load
中所述)。幸运的是,bash很简单:

images=(web cache db)
for image in images
do
    docker save ${image} > ${image}.tar
    scp ${image}.tar $yourhost:
    ssh $yourhost docker load ${image}.tar
done

远程注册表选项可能是一种更“生产级”的方法。移动一堆图像可能非常慢,但YMMV。

图像被推送到注册表,容器是一次性的。您是否对想要保留的容器进行了更改?如果是这样的话,这些更改应该被烘焙到基础图像中。@KevanAhlquist-你是对的,我对术语感到困惑。我将更新问题以反映这一点。我不确定这是否有效,因为它不会为DockerFile的每个步骤保存图像。例如,如果您保存3个图像,然后运行docker rm$(docker ps-a-q)和&docker rmi$(docker images-q),然后docker加载您保存的所有内容,“docker compose build.”将不会在各个步骤中使用缓存。难道你不需要运行类似“docker history”的程序来获取所有图层,然后保存每个图层吗?