在AWS ELB上运行连接到主机节点应用程序的Docker容器

我想要做的是双重的:一,在我的Elastic Beanstalk环境中运行一个Docker容器(最好由Dockerfile创build,而不是从图像中提取),而Elastic Beanstalk环境已经在生产中运行了一个Node应用程序。 然后,将两者连接在一起,以便我的服务器(在Docker容器上运行)可以通过主机上的本地主机访问。 这样做的最终目标是让两者通过TCP进行通信,但是我已经知道了sans Dockeriziation。

从我看到的,AWS有一个单容器Docker应用程序的选项; 然而,目前还不清楚它是专门用于在Docker上运行的应用程序,还是像我这样的场景。 从我读到的,我倾向于前者。

因此,我的唯一select是将Docker作为一个包手动安装到我的实例上,作为一个服务运行,然后通过Dockerfile构build并运行? 这似乎相当迂回,我相信我以前尝试过,取得有限的成功 – 但如果这是最好的道路,那就是我将要尝试的!

谢谢你们可以给我的任何帮助。 将接受第一个答案,提供一个可行的解决scheme。

在这种情况下,您需要将现有的Node应用程序打包到Docker容器中,然后使用ELB Multi Container Docker环境在容器中运行这两个应用程序。

您将需要将这两个容器都存储在私人或公共registry中。 要利用AWS Registry服务,请按照本文中的说明进行操作。 然后在您的EB环境的Dockerrun.aws.json文件中引用您的容器。

为了允许容器相互通信,在Dockerrun.aws.json文件中包含“链接”到其他容器:

{ "AWSEBDockerrunVersion": 2, "containerDefinitions": [ { "name": "my-node-app", "image": "registry:my-node-app", "essential": true, { "name": "other-container", "image": "registry:other-container", "essential": true, "portMappings": [ { "hostPort": 80, "containerPort": 80 } ], "links": [ "my-node-app" ] } ] } 

在这种情况下,Docker通过主机名“my-node-app”将这个节点容器公开给你的其他容器(这是一个简单的Dockerrun文件)