运行多个docker撰写

Geo*_*rey 12 docker kubernetes docker-compose

我正在使用在3个不同的码头工人上运行的应用程序:

  • 第一个是使用REST API调用的服务器HTTP
  • 第二个是rabbitmq
  • 第三个是工人

整个应用程序启动 docker-compose up

真的很简单:)

我想使它可扩展并独立于其他应用程序运行整个应用程序的多个实例(3个docker镜像),然后放置一个负载均衡器haproxy,将重定向到其中一个应用程序.

我看到我可以使用,docker-compose up --scale blablabla但问题是我可以扩展容器,但我真的想保持不同的"应用程序"独立.

例如,如果我想要3个版本的应用程序,我将有9个泊坞窗图像等.

我看到我们可以在docker中运行docker --privilege(允许我在里面创建一个带有3个docker的docker)但是我在Stack Overflow上读到它不是一个合适的解决方案.

你有解决方案吗?或至少阅读一些文件.

我听说Kubernetes可能是一个解决方案,但我不确定.我看了(在堆栈上)

如果您需要紧密绑定多个容器,您可能需要查看在其"pods"中运行docker的Kubernetes

And*_*inn 32

听起来你只想要3个不同的环境或Compose应用程序的"堆栈"彼此独立运行.如果是这种情况,您可以使用--project-name-p选项来处理此问题docker-compose.一个例子是这样的:

  • 启动应用程序版本1: docker-compose -p appv1 up -d
  • 启动应用程序版本2: docker-compose -p appv2 up -d
  • 启动应用程序版本3: docker-compose -p appv3 up -d

此时,您将运行3组不同的容器,这些容器可以彼此独立地扩展.Docker Compose将项目名称(通常从文件夹名称推断)添加到容器名称之前.您将结束与容器的名字,如appv1_worker_1,appv2_worker_1,appv3_worker1.如果您只扩展appv2工作服务(docker-compose -p appv2 scale worker=2),那么您将获得额外的服务appv2_worker_2.

默认情况下,compose始终会创建容器可以在其中进行通信的默认网络.在这种情况下,你将有3个独立的网络(appv1_default,appv2_default,和appv3_default).

如果您接下来想为每个项目名称运行不同的图像,则可以在中使用环境变量插值docker-compose.yml.例如,您可以指定image: ${MYIMAGE}服务,然后执行以下操作:

  • MYIMAGE=myorg/myapp:v1 docker-compose -p appv1 up -d
  • MYIMAGE=myorg/myapp:v2 docker-compose -p appv2 up -d

希望这有助于在Docker Compose中做到这一点.


小智 11

如果要从单个命令一次运行多个 docker-compose 文件,请使用此方法。如果撰写文件是 docker-compose1.yml 和 docker-compose2.yml,则可以使用以下命令运行这两个 docker 文件,

docker-compose -f docker-compose1.yml -f docker-compose2.yml up

  • 此方法与将服务复制并粘贴到同一个 docker-compose 文件中相同。例如,如果您有两个名为“app”的服务,那么运行该服务的结果将是一个具有一个“app”容器的单个堆栈,该容器混合了两个组合文件的配置。 (2认同)