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

标签 docker sails.js boot2docker

我有两个服务在不同的容器中运行,一个是 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/

相关文章:

vagrant - 如何通过 SSH 连接到 Vagrant 1.6 Docker Provider 设置的 boot2docker 主机 vm?

docker - 更改 Docker 容器中的 ulimit

docker - 如何使用Docker获取JDK + MySQL + Tomcat容器?

javascript - SailsJS 使用自定义 EJS 过滤器

node.js - 如何在 sails js 中配置 Node 推送服务器?

docker - 停止时如何在Docker容器中修改启动脚本?

hadoop - 如何在正在运行的 docker 容器上执行命令?

nginx - Docker中的NGINX服务失败,限制了内存和CPU使用率

docker - 如何从kubernetes容器中获取公网IP

ajax - 带有部分 ajax 加载 View 的 NodeJS MVC 框架