Docker 端口公开

Docker port expose

作为

的跟进

我已成功将 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

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

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

docker端口显示

3000/tcp -> 0.0.0.0:3000

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

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

为菜鸟道歉。非常感谢任何帮助!

问题是您正在使用 boot2docker。端口在虚拟机 运行ning docker 上发布 。您可以通过 运行ning boot2docker ip.

获取该虚拟机的 IP 地址

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

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