我想将我的应用程序堆栈(由 3 个 docker 镜像组成并由 docker-compose 管理)从我的开发机器上整体移动到生产机器上。我知道一些直接使用 docker 的方法:
- 将图像推送到注册表并将它们从生产环境中拉出
- docker 从开发中保存,然后在生产中使用 docker 加载
- 在生产环境中重建镜像(宁愿降低对生产环境的依赖,所以不是一个好的选择。)
我目前倾向于先进行 docker save 然后 docker load,但我想知道是否有办法使用 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。
关于docker - 在主机之间移动 docker-compose 容器集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35024216/