我有几个 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 服务器。
- 配置您的主机解析器以将此端口用于存根区域。