披露:我是 docker 新手。
我无法将 Docker 容器连接到网络。我启动了容器,并在其 bash 中使用ping6
网络上的另一个地址,结果出现无法到达目的地的情况。我没有网络访问权限,所以看不到yum install wireshark
发生了什么。
我有两个子网(fc8c:979b:1f4e:6ec7::/64
[我的局域网] 和fd45:73cb:008d:16b7::/64
[用于 docker-containers])。如果这些是物理服务器,我会将 docker-host 指定为 ipfc8c:979b:1f4e:6ec7:6ae9:a0dc:840f:1a81
并fd45:73cb:8d:16b7:694f:c5d1:818:4651
指定为网关。然后,我会将静态、随机生成的 IP 分配给fd45:73cb:8d:16b7::/64
docker-containers 并设置适当的路由。
那么问题是..如何让docker-host充当我的网关?如何让docker-host向docker-containers发送路由器广告(或等效广告)?
我看到一个以太网适配器,但如果我需要使用命令,docker0
我就不想对其进行配置。ip
docker
答案1
感谢 Almdandi 链接涵盖 Docker 中的 IPv6 的文档。
通过改变两件事我就能让 IPv6 正常工作,下面列出了所需的一切。
- Docker
- 两个 IPv6 /64 子网(设为
[Subnet_0]
docker-host 所eth0
连接的子网,并设为[Subnet_1]
容器专用的 /64)。 - Radvd(或其他路由器广告解决方案)
修改/etc/docker/daemon.json
文件以包含
{
"ipv6": true,
"fixed-cidr-v6": "[Subnet_1]::/64"
}
您的空间中哪个[Subnet_1]
/64 子网仅用于容器,并且不是 docker-host 所附加的子网。(我使用了来自我们的 /48 的全局可路由空间)。
eth0
然后我使用 radvd[Subnet_1]
作为路由,在 docker-host 的接口外添加了一个路由器广告。
Docker 似乎
eth0
从和设置路由器docker0
,并自行设置其适用的子网。[Subnet_1]
自行向容器发送前缀通告。