导出 docker-compose 容器

问题描述 投票:0回答:3

我使用 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 export
3个回答
3
投票

这里有几种方法。

  1. 将所有镜像存储在 Docker 注册表中。为此,您需要标记并推送图像。完成后,将撰写文件复制到新计算机并运行

    docker-compose up
    。请注意,您必须更改撰写中的图像名称以反映您重新标记的图像,以便能够将它们拉下来。

  2. 如果您无权访问 docker 注册表,您可以使用

    docker save 
    命令保存 docker 映像,该命令将创建这些映像的 tar 文件。将这些 tar 文件复制到新系统并执行
    docker load
    将它们作为 tar 文件中的图像加载。完成后,您可以运行 docker compose 命令将它们部署到新系统上


0
投票

我认为你可以使用

将你的图像推送到docker注册表上
docker push

然后从其他机器上提取图像并运行它。

文档位于此处


0
投票

一个快速提示,如果您无权访问 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

如果你的容器名称有变量。

© www.soinside.com 2019 - 2024. All rights reserved.