我有两个服务在不同的容器中运行,一个是 grunt(应用程序)并在端口 9000 上运行,另一个是sails.js(服务器),在端口 1337 上运行。我想做的是让客户端应用程序通过 localhost:1337 与服务器连接。这可行吗?谢谢。
最佳答案
主机
您将无法使用 localhost
连接到另一个容器(因为 localhost
是当前容器),但您可以通过容器主机(主机那是运行你的容器)。在您的情况下,您需要 boot2docker VM IP (echo $(boot2docker ip)
)。为此,您需要在主机级别公开您的端口(您正在使用 -p 1337:1337
)。
链接
另一个最常见且我更喜欢的解决方案是链接容器。
您需要将 --name 标志添加到服务器 docker run
命令:
--namesails_server
您需要将 --link 标志添加到应用程序 docker run
命令:
--链接sails_server:sails_server
在您的应用程序中,您将能够在 sail_server:1337
访问服务器
您还可以使用环境变量来获取服务器 IP。参见文档:https://docs.docker.com/userguide/dockerlinks/
奖金: docker 组成
您的运行命令可能开始有点长...在这种情况下,我喜欢使用 docker-compose这允许我在一个文件中定义我的容器及其关系(卷、名称、链接、命令...)。
关于docker - 如何通过 localhost 连接两个 docker 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29143903/