Docker:为容器设置dns

时间:2016-04-01 14:01:31

标签: docker dns

我正在为其他容器设置DNS(也在容器中)。当我手工完成时(将--dns=172.17.0.100传递给docker run),它的效果非常好。

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

有没有办法可以直接传递DNS容器名称并识别?

感谢。

2 个答案:

答案 0 :(得分:1)

不是一个真正的答案,而是一些观察,对评论来说太大了......

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

docker inspect

2 - 您可以在docker-compose.yml文件中使用环境变量 - 这些env vars可以引用您要使用的IP。您还可以将变量值传递给脚本中的docker-compose.yml。

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

答案 1 :(得分:0)

您可以将链接容器与自定义入口点脚本一起使用。像这样启动你的容器:

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

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

然后,您可以在/etc/resolv.conf脚本中动态编写要用于entrypoint.sh文件的名称服务器(需要出现在容器图像中):

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