如何通过本地连接两个docker集装箱?

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

主办

您将无法使用localhost连接到其他容器(因为localhost是当前容器),但可以通过容器主机(运行容器的主机)进行连接。 在你的情况下,你需要boot2docker VM IP( echo $(boot2docker ip) )。 为了达到这个目的,你需要在主机级别上暴露你的端口(你正在使用-p 1337:1337 )。

链接

另一个最常见的解决scheme是,如果可能,我更喜欢链接容器。

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

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

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

奖金:DOCKER-COMPOSE

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

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