如何通过本地主机连接两个 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, 命令...) 在一个文件中。
我在不同的容器中有两个服务 运行,一个是 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, 命令...) 在一个文件中。