主机解决与docker和docker组成
我想知道为什么,在docker-compose的情况下,容器无法在与docker协同工作时parsing主机名? 主机在不同的物理机器上,但在同一个networking上。
我的Dockerfile
FROM openjdk:8-jre-alpine CMD ping -c 2 myhost
我docker-compose.yml
version: '3.3' services: net: build: . image: test/myimage:1.0 container_name: mycontainer
在docker-compose build
我试了一下
docker run -it test/myimage:1.0 PING myhost (10.20.78.13): 56 data bytes 64 bytes from 10.20.78.13: seq=0 ttl=250 time=0.720 ms 64 bytes from 10.20.78.13: seq=1 ttl=250 time=0.515 ms
但
docker-compose up Recreating mycontainer ... Recreating mycontainer ... done Attaching to mycontainer mycontainer | ping: bad address 'myhost' mycontainer exited with code 1
我能做些什么来使它工作?
EDIT1
使用cat /etc/resolv.conf
而不是ping -c 2 myhost
docker-compose up Recreating mycontainer ... Recreating mycontainer ... done Attaching to mycontainer mycontainer | search myorg.intra mycontainer | nameserver 127.0.0.11 mycontainer | options ndots:0 mycontainer exited with code 0
和
docker run -it test/myimage:1.0 # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 10.19.128.55 nameserver 10.19.142.23 nameserver 10.19.128.56 search myorg.intra
你也需要在你的撰写中使用dns条目
version: '3.3' services: net: build: . image: test/myimage:1.0 container_name: mycontainer dns: - 10.19.128.55 - 10.19.142.23 - 10.19.128.56 dns_search: myorg.intra
如果你不想为每个容器指定它们,那么你甚至可以直接在守护进程级别设置它们。
在JSON文件中创build或编辑/etc/docker/daemon.json
和以下条目
{ "dns": ["10.19.128.55", "10.19.142.23", "10.19.128.56"], "dns-search": ["myorg.intra"], }
使用service docker restart
重新启动docker服务。 那么你不应该需要在docker-compose
的条目。 您的原始docker-compose
工作人员应该工作
当直接运行docker命令与执行一些docker-compose运行时,networking设置存在细微差别。 使用docker-compose时,容器会连接到某个用户定义的networking,该networking是bridged network
但不具有与default bridged network
相同的configuration。 后者做了一些特殊的configuration,以向后兼容这些networkingfunction不存在的版本。
我假设从compose运行时,你缺less主机上可用的一些dns设置,因此你无法parsingnetworking上的其他主机。 请看看这里和这里的区别。 对于第一次检查,您可以比较两种方法运行cat /etc/resolv.conf
而不是ping命令时的输出,并查看需要添加哪些内容才能使用compose工作。