【问题标题】:Moving docker-compose containersets around between hosts在主机之间移动 docker-compose 容器集
【发布时间】:2016-05-03 15:05:09
【问题描述】:

我想将我的应用程序堆栈(由 3 个 docker 映像组成并由 docker-compose 管理)从我的开发机器上整体移动到生产机器上。我知道一些直接使用 docker 的方法:

  • 将映像推送到注册表并将它们从生产环境中拉出
  • docker 从开发中保存,然后在生产中使用 docker 加载
  • 在生产环境中重建映像(宁愿降低对生产环境的依赖,所以不是一个好的选择。)

我目前倾向于先进行 docker save 然后 docker load,但我想知道是否有办法使用 docker-compose 管理的整个容器集来做到这一点?

提前致谢

【问题讨论】:

  • 图像被推送到注册表,容器是一次性的。您是否对要保留的容器进行了更改?如果是这样,这些更改应该被烘焙到基础图像中。
  • @KevanAhlquist - 你是对的,我对术语感到困惑。我会更新问题以反映这一点。

标签: docker docker-compose


【解决方案1】:

Compose 中没有保存 Compose 文件中构建的图像的功能,这是 docker 客户端的工作(正如您在 docker savedocker 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。

【讨论】:

  • 我不确定这是否有效,因为它不会为 DockerFile 的每个步骤保存图像。例如,如果您保存 3 个图像,然后运行 ​​docker rm $(docker ps -a -q) && docker rmi $(docker images -q),然后 docker 加载您保存的所有内容,“docker-compose build . "不会将缓存用于各个步骤。您不必运行类似“docker history”之类的东西来获取所有图层然后保存每个图层吗?
猜你喜欢
  • 2014-11-03
  • 2015-04-28
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
相关资源
最近更新 更多