在主机之间移动docker-compose containerets

Jos*_*osh 10 docker docker-compose

我想把我的应用程序堆栈,包括3个docker镜像并由docker-compose管理,并将它从我的开发机器整个移动到生产机器上.我知道有几种方法可以直接使用docker:

  • 将图像推送到注册表并将其从生产中拉出
  • docker从开发中保存,然后在生产中加载docker
  • 在生产时重建图像(宁愿将依赖关系保留在生产中,所以不是一个好的选择.)

我目前倾向于做docker save然后docker load,但我想知道是否有办法用docker-compose管理的整套容器来做这件事?

提前致谢

Ben*_*ley 7

有一个在撰写任何功能,以节省建在撰写文件中的图像,它的泊坞窗客户端的工作(如你有陈述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
Run Code Online (Sandbox Code Playgroud)

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

  • 我不确定这是否有效,因为它不会为 DockerFile 的每个步骤保存图像。例如,如果您保存 3 个图像,然后运行 ​​docker rm $(docker ps -a -q) && docker rmi $(docker images -q),然后 docker 加载您保存的所有内容,“docker-compose build . ” 不会将缓存用于各个步骤。你不是必须运行“docker history”之类的东西来获取所有层然后保存每一层吗? (2认同)