Docker:为容器设置dns

我正在为其他容器设置一个DNS(也在容器中)。 当我手动执行时(通过--dns=172.17.0.100--dns=172.17.0.100 docker run ),它工作得很好。

但是我需要使用docker撰写我的项目,我不能这样做,因为我的DNS容器的IP地址一直在改变。 我不想为容器设置静态IP地址。 我应该怎么做?

有没有一种方法,我可以通过DNS容器的名称,它可以识别?

谢谢。

不是一个真正的答案,而是一些观察,太大的评论…

1 – 如果有帮助,您可以检索有关正在运行的容器的信息

 docker inspect 

2 – 您可以在docker-compose.yml文件中使用环境variables – 这些环境variables可以引用您要使用的IP。 您也可以在脚本中将variables值传递给docker-compose.yml。

希望这将会帮助你解决这个问题

您可以使用链接容器与自定义入口点脚本。 像这样开始你的容器:

 docker run --link your-dns-server:dns --entrypoint /path/to/entrypoint.sh <image> <command> 

或者,将ENTRYPOINT添加到图像的Dockerfile而不是传递--entrypoint参数。

然后,您可以在entrypoint.sh脚本中dynamic地将名称服务器写入/etc/resolv.conf文件(需要存在于容器映像中):

 #!/bin/sh echo "nameserver ${DNS_PORT_53_UDP_ADDR}" > /etc/resolv.conf exec $@