如何通过本地主机连接两个 docker 容器?

How to connect two docker containers through localhost?

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

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

主机

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

LINK

另一种最常见且我尽可能喜欢的解决方案是 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-撰写

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