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 $@