运行多个docker撰写

我正在使用在3个不同的docker上运行的应用程序:

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

整个应用程序是由docker-compose up

真的很简单:)

我想使其具有可伸缩性,并且独立于其他应用程序运行整个应用程序(3个docker映像)的多个实例,然后放置一个像haproxy这样的负载均衡器,它将redirect到其中一个应用程序。

我看到,我可以使用docker-compose up --scale blablabla但是这个问题是,我可以缩放容器,但我真的想保持不同的“应用程序”独立。

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

我看到我们可以使用--privilege (允许我用3个--privilege创build一个--privilege--privilege内部运行--privilege但是我在Stack Overflow上看到这不是一个合适的解决scheme。

你有解决scheme吗? 或者至less有一些文件要阅读。

我听说Kubernetes可能是一个解决scheme,但我不知道。 我读(堆栈)

如果你需要紧紧绑定多个容器,你可能想看看在他们的“豆荚”里面运行docker的Kubernetes,

这听起来像是你只想要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_1appv2_worker_1appv3_worker1 。 如果您只appv2工作服务( appv2 docker-compose -p appv2 scale worker=2 ),那么您将获得一个额外的appv2_worker_2

默认情况下,compose始终创build容器可以在其中进行交谈的默认networking。 在这种情况下,您将拥有3个独立的networking( appv1_defaultappv2_defaultappv3_default )。

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

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

希望这是一个有用的想法,在Docker Compose里面做。