我正在为其他容器设置DNS(也在容器中)。当我手工完成时(将--dns=172.17.0.100
传递给docker run
),它的效果非常好。
但是我需要为我的项目使用docker compose,我不能这样做,因为我的DNS容器的IP地址一直在变化。我不想为容器设置静态IP地址。我该怎么做?
有没有办法可以直接传递DNS容器名称并识别?
感谢。
答案 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 $@