Docker 容器的 DNS 名称解析在主机上不起作用

Docker 容器的 DNS 名称解析在主机上不起作用

我有几个 Docker 容器在bridge模式下运行,我想通过主机上的容器单标签名称来寻址它们。我的主机是 Debian Linux 系统

$uname -a
Linux sv2 6.1.0-17-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.69-1 (2023-12-30) x86_64 GNU/Linux

我的daemon.json样子是这样的:

{
    "bip": "10.20.0.1/24",
    "default-address-pools": [
        {
            "base": "10.20.0.0/16",
            "size": 24
        }
    ],
    "ipv6": true,
    "experimental": true,
    "fixed-cidr-v6": "fd00::/64",
    "ip6tables": true
}

一切似乎都运行正常。每个容器通过 DHCP 从地址池中接收一个 IP:

知识产权

但是,我无法通过容器单标签名称访问容器:

$ping mycontainer
ping: mycontainer: Name or service not known

创建手动主机名条目毫无用处,因为每个容器的 IP 地址在每次重启时都会发生变化。固定 IP 分配是一种解决方法,但不是解决方案。

有人有解决方案吗?

答案1

我认为docker不会将其内部DNS服务器暴露给外部。

您可以执行类似以下的操作(未经测试,仅为一个想法):

  • 创建一个向外部公开端口的容器,并将 DNS 请求转发到内部 docker DNS 服务器。
  • 配置您的主机解析器以将此端口用于存根区域。

相关内容