[英]Access host machine dns from a docker container
/我在mac上使用docker beta并且在service-a/docker-compose.yml
设置了一些服务:
version: '2'
services:
service-a:
# ...
ports:
- '4000:80'
然后我在/etc/hosts
设置以下内容:
::1 service-a.here
127.0.0.1 service-a.here
我有一个nginx
服务器运行代理service-a.here
到localhost:4000
。 所以在我的Mac上我可以运行: curl http://service-a.here
。 一切都很好。
现在,我正在构建另一个服务, service-b/docker-compose.yml
:
version: '2'
services:
service-b:
# ...
ports:
- '4001:80'
environment:
SERVICE_A_URL: service-a.here
service-b
需要service-a
来完成以下几件事:
$SERVICE_A_URL
$SERVICE_A_URL
对service-a
执行HTTP请求 使用此设置,只有重定向(1.)有效。 HTTP请求(2.)不起作用,因为service-b
容器在它的DNS中没有service-a.here
概念。
我尝试使用add_hosts
配置变量添加service-a.here
,但是我不知道要将它设置为什么。 localhost
当然不会工作。
请注意,我真的希望将docker-compose文件分开(加入它们不会解决我的问题),因为它们都已经在其中运行了很多服务。
有没有办法从docker容器内部访问DNS解析localhost,以便例如curl service-a.here
可以在容器内部工作?
您可以使用docker-compose.yml文件中的“link”指令自动解析容器service-b中的地址。
service-b:
image: blabla
links:
- service-a:service-a
service-a:
image: blablabla
你现在在服务的/ etc / hosts中有一行 - b说:
service-a 172.17.0.X
请注意,service-a将在编写应用程序时在service-b之前创建。 我不确定如何指定一个特殊的IP,但Docker的文档做得很好。 希望这就是你要找的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.