我使用 docker-compose 创建了一个由三个图像组成的应用程序。我现在想了解如何导出包含所有服务的应用程序。
为了澄清起见,容器和图像如下:
container ls -a
CONTAINER ID IMAGE
82522c850e9c docker-app_client
7c796b6629bb docker-app_server
66c84b58da2b mongo
docker images
docker-mice-tracking-app_server
docker-mice-tracking-app_client
mongo
我可以通过输入
docker-compose up
从构建 Docker 映像的文件夹启动我的应用程序。
如何导出此图像并在不同的计算机上复制相同的行为?
谢谢你。
这里有几种方法。
将所有镜像存储在 Docker 注册表中。为此,您需要标记并推送图像。完成后,将撰写文件复制到新计算机并运行
docker-compose up
。请注意,您必须更改撰写中的图像名称以反映您重新标记的图像,以便能够将它们拉下来。
如果您无权访问 docker 注册表,您可以使用
docker save
命令保存 docker 映像,该命令将创建这些映像的 tar 文件。将这些 tar 文件复制到新系统并执行 docker load
将它们作为 tar 文件中的图像加载。完成后,您可以运行 docker compose 命令将它们部署到新系统上
一个快速提示,如果您无权访问 docker 注册表并且需要将所有已完成的容器从 docker-compose.yml 文件迁移到另一台计算机,您可以运行如下脚本:
grep -oP "container_name:\s+\K(.*)" docker-compose.yml | while read cn; do docker export "${cn}" > "${cn}.tar"; done
或
docker compose config | grep -oP "container_name:\s+\K(.*)" | while read cn; do docker export "${cn}" > "${cn}.tar"; done
如果你的容器名称有变量。