Docker端口暴露

时间:2015-03-06 20:29:35

标签: docker boot2docker

作为Linking Docker Containers

的后续行动

我已成功将mongo,redis容器与我的nodejs应用容器相关联。我的节点应用程序现在在我的容器内运行但由于某种原因我无法访问它:

CONTAINER ID        IMAGE                     COMMAND                CREATED             STATUS              PORTS                    NAMES
3f8790bb7cc5        mseay/myapp:latest        "/bin/bash"            2 minutes ago       Up 2 minutes        0.0.0.0:3000->3000/tcp   myapp
5470cdd876eb        redis:latest              "/entrypoint.sh redi   About an hour ago   Up About an hour    6379/tcp                 redis
36c61197d8bd        mongo:latest              "/entrypoint.sh mong   About an hour ago   Up About an hour    27017/tcp                mongo

在我的容器中,我的节点应用程序在端口3000上运行。我的docker run命令指定将容器中的3000映射到我的主机上的3000:

docker run -i -t -p 3000:3000 --name myapp --link mongo:MONGODB --link redis:REDIS mseay/myapp /bin/bash

docker port显示

3000/tcp -> 0.0.0.0:3000

但是,当我转到localhost:3000或尝试卷曲它时:

curl: (7) Failed to connect to localhost port 3000: Connection refused

抱怨自己是无趣的。任何帮助总是非常感谢!

1 个答案:

答案 0 :(得分:4)

问题是您正在使用boot2docker。端口在运行docker 的虚拟机上发布。您可以通过运行boot2docker ip来获取该虚拟机的IP地址。

因此,对于端口3000上的服务,您可以运行:

curl http://$(boot2docker ip):3000/