Saf*_*fik 2 java dns network-programming docker docker-compose
我正在使用docker-compose命令来创建和启动我的容器.
我的Docker版本
docker --version
Docker version 17.09.0-ce, build afdb6d4
我的Docker-Compose版本
docker-compose --version
docker-compose version 1.16.1, build 6d1ac21
我正在使用的.yml文件看起来像这样:(请注意,我只是缩短它以将敏感的东西拿出来)
---
services:
zookeeper:
image: "zookeeper"
server-1:
cap_add:
- "NET_ADMIN"
server-0:
cap_add:
- "NET_ADMIN"
dns:
- 8.8.8.8
- 9.9.9.9
environment:
SERVER_ID: 0
NETEM_HOSTS: ""
LOSS_VALUES: ""
MAX_RATE_VALUES: ""
DELAY_VALUES: ""
image: "cloud.mycompany.com:5000/server-0:latest"
fakedns:
image: "cloud.mycompany.com:5000/fakedns:latest"
version: "3.3"
Run Code Online (Sandbox Code Playgroud)
然后我开始使用:
docker-compose --file compose.yml up -d
我的问题是:
1)容器出现后......当我进入容器时,例如在这种情况下服务器-0,我没有看到/etc/resolv.conf文件已更新为使用这些名称服务器.相反,它使用docker的嵌入式dns,即127.0.0.11
2)如何确保它使用我在docker-compose使用的文件中指定的内容
3)我尝试使用命令执行此操作,它似乎工作,但我需要从compose-file
docker run -p 4000:53 --dns=8.8.8.8 cloud.mycompany.com:5000/server-0:latest
4)理想情况下,我希望它拥有容器'fakedns'的IP地址,以便它使用这个而不是嵌入式的@ 127.0.0.11
您不会看到自定义DNS服务器,/etc/resolv.conf但Docker的解析器会将DNS请求转发给它们.
Docker构成定义为v2 +默认创建用户定义的网络.
具有用户定义网络的Docker使用嵌入式DNS服务器,以便Docker可以响应本地容器请求(服务发现).
对于Docker无法解析的任何DNS主机,请求将被转发到DNS服务器.这是系统默认服务器,配置的服务器dockerd或在运行时为容器配置的DNS服务器.
使用内部DNS服务器时要小心.如果您在创建鸡蛋或鸡蛋问题时将系统DNS指向容器,Docker守护程序中的内容将会中断,Docker需要DNS启动但无法启动容器来提供DNS.
由于您的示例配置仅为一个应用程序容器设置DNS,因此应该没问题,但在应用程序之前确保DNS容器已启动且运行正常.
| 归档时间: |
|
| 查看次数: |
2467 次 |
| 最近记录: |