如何将链接的容器视为本地主机?
How to see a linked container as localhost?
我有这两个容器:
api:
image: social-learning
ports:
- "3000:3000"
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- ../api:/app
expose:
- "3000"
web:
image: social-learning-frontend
ports:
- "4200:4200"
- "9000:9000"
command: ember serve -p 4200
volumes:
- .:/app
links:
- api
expose:
- "3000"
当我这样做时:
docker exec `docker ps -a | grep 'frontend_web_1' | awk '{print }'` curl http://localhost:3000
我总是被拒绝连接。我可以通过它的 IP 访问另一个容器,但我更愿意以本地主机的身份访问它。
可能吗?
这里好像有点乱。
看起来您正在尝试登录 Web 容器并使用本地主机地址访问 api 容器?这行不通。
最好的解决方案就是使用您声明的 link;在 Web 容器中,您应该能够执行 curl http://api:3000
。这是有效的,因为 Docker 已为您的 api 容器向 /etc/hosts
添加了一个条目。
通过 localhost
访问仅适用于发布容器端口的 Docker 主机。我想您可以通过 Docker 网桥(例如 curl 172.17.42.1:3000
)从容器内访问 Docker 主机,但这似乎毫无意义地复杂和脆弱。
我有这两个容器:
api:
image: social-learning
ports:
- "3000:3000"
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- ../api:/app
expose:
- "3000"
web:
image: social-learning-frontend
ports:
- "4200:4200"
- "9000:9000"
command: ember serve -p 4200
volumes:
- .:/app
links:
- api
expose:
- "3000"
当我这样做时:
docker exec `docker ps -a | grep 'frontend_web_1' | awk '{print }'` curl http://localhost:3000
我总是被拒绝连接。我可以通过它的 IP 访问另一个容器,但我更愿意以本地主机的身份访问它。
可能吗?
这里好像有点乱。
看起来您正在尝试登录 Web 容器并使用本地主机地址访问 api 容器?这行不通。
最好的解决方案就是使用您声明的 link;在 Web 容器中,您应该能够执行 curl http://api:3000
。这是有效的,因为 Docker 已为您的 api 容器向 /etc/hosts
添加了一个条目。
通过 localhost
访问仅适用于发布容器端口的 Docker 主机。我想您可以通过 Docker 网桥(例如 curl 172.17.42.1:3000
)从容器内访问 Docker 主机,但这似乎毫无意义地复杂和脆弱。