Docker 中 Bind 容器与 ClearDNS 容器共用 53 端口的解决方法
在 Docker 中,每个容器都有自己的网络命名空间,这意味着每个容器可以有自己的网络配置,包括端口映射。
如果你想在同一台主机上运行一个绑定(Bind)容器和一个 ClearDNS 容器,并且它们都需要使用 53 端口,你可以使用以下两种方法使它们同时工作:
-
使用不同的主机端口:
- 在运行绑定容器时,将其绑定到主机的另一个端口,例如 5353 端口:
docker run -d -p 5353:53 bind - 同样,在运行 ClearDNS 容器时,将其绑定到主机的另一个端口,例如 5354 端口:
docker run -d -p 5354:53 cleardns - 这样,绑定容器将监听主机的 5353 端口,而 ClearDNS 容器将监听主机的 5354 端口。你可以通过这些端口来访问它们。
- 在运行绑定容器时,将其绑定到主机的另一个端口,例如 5353 端口:
-
使用 Docker 的网络功能:
- 创建一个自定义的 Docker 网络:
docker network create mynetwork - 在此网络中运行绑定容器,将其绑定到 53 端口:
docker run -d --net=mynetwork --name=bind --restart=always -p 53:53 bind - 运行 ClearDNS 容器,并将其连接到相同的网络,不需要绑定到 53 端口:
docker run -d --net=mynetwork --name=cleardns --restart=always cleardns - 现在,绑定容器和 ClearDNS 容器都可以通过其容器名称相互通信,因为它们在同一网络中。绑定容器将监听 53 端口,而 ClearDNS 容器将使用默认的 DNS 端口。
- 创建一个自定义的 Docker 网络:
以上两种方法都可以让绑定容器和 ClearDNS 容器同时工作,并且它们都可以使用 53 端口。你可以根据你的需求选择其中一种。
原文地址: https://www.cveoy.top/t/topic/qiIr 著作权归作者所有。请勿转载和采集!