如何通过localhost连接两个docker容器?

时间:2015-03-19 11:54:44

标签: docker sails.js boot2docker

我有两个服务在不同的容器中运行,一个是grunt(应用程序)并运行端口9000,另一个是sails.js(服务器)运行端口1337.我想要尝试做的是拥有客户端app通过localhost:1337与服务器连接。这可行吗?感谢。

2 个答案:

答案 0 :(得分:9)

HOST

您无法使用localhost连接到其他容器(因为localhost是当前容器)但您可以通过容器主机(运行您的主机)连接容器)。在您的情况下,您需要boot2docker VM IP(echo $(boot2docker ip))。为此,您需要在主机级别(您使用-p 1337:1337进行操作)公开您的端口。

LINK

另一种最常见的解决方案是,我希望在可能的情况下,链接容器。

您需要将--name标志添加到服务器docker run命令: --name sails_server

您需要将--link标志添加到应用程序docker run命令: --link sails_server:sails_server

在您的应用程序中,您将能够通过sail_server:1337访问服务器 您还可以使用环境变量来获取服务器IP。请参阅文档:https://docs.docker.com/userguide/dockerlinks/

奖金:DOCKER-COMPOSE

您的运行命令可能会开始有点长......在这种情况下,我喜欢使用docker-compose来允许我定义容器及其关系(卷,名称,链接,命令......)在一个文件中。

答案 1 :(得分:0)

如果您在docker run命令中使用docker参数-p 1337:1337,它会将容器内的端口1337暴露给您的localhost:1337