Bri*_*ell 8 docker docker-networking
我正在使用 Docker 18.03.1-ce,如果我创建一个容器,将其删除然后重新创建它,内部 DNS 会保留旧地址(除了新地址)。
有没有办法清除或刷新旧条目?如果我删除并重新创建网络,那么它会刷新它,但我不想每次都这样做。
我创建网络:
docker network create -d overlay --attachable --subnet 10.0.0.0/24 --gateway 10.0.0.1 --scope swarm -o parent=ens224 overlay1
Run Code Online (Sandbox Code Playgroud)
然后创建一个容器(本例中为 SQL)
docker container run -d --rm --network overlay1 --name sql -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Some_SA_Passw0rd' -p 1433:1433 microsoft/mssql-server-linux
Run Code Online (Sandbox Code Playgroud)
如果我在同一个网络上创建一个 Alpine 容器,我可以nslookup sql按名称并解析为10.0.0.6. 没有问题,到目前为止一切都很好。
现在,如果我删除 SQL 容器并重新创建它,则会nslookup sql显示10.0.0.6和10.0.0.8. 该10.0.0.6是原来的地址,不再活着,但仍做出决议。
我的容器使用的名称服务器127.0.0.11是用户创建的网络的典型名称,但我找不到任何可以让我清除其缓存的内容。
也许我遗漏了一些东西,但我认为只要容器被移除,DNS 条目就会被拆除。
任何见解当然值得赞赏!
我刚刚通过在 Docker Swarm 中运行容器解决了同样的问题。似乎 Swarm 做了一些事情来保持 DNS 条目最新。我尝试使用docker rm手动删除我的应用程序容器,并对其进行放大/缩小 - 在每种情况下,它的主机名都仅正确解析为现有的 IP 地址。
如果您无法使用 Swarm,我想另一种解决方案是运行独立的服务发现工具(可能在另一个容器中)并配置其他容器以将其用作 DNS 服务器而不是内置服务器。
| 归档时间: |
|
| 查看次数: |
10842 次 |
| 最近记录: |