关于 docker 给容器分配 IPv6 的问题

2022-02-02 23:45:32 +08:00
 HOMMEEN

已经按照这篇文章Docker 桥接网络开启 IPv6 支持中的步骤一步一步做下来了。 但是在配置 Docker Compose 的 IPv6 支持的时候,已经按照自己划分的网段配置好了,但是新建容器之后并没有分配给他 IPv6 ,这是啥原因?

2392 次点击
所在节点    Docker
15 条回复
Showfom
2022-02-03 01:15:20 +08:00
这个我遇到过,后来发现压根不用那么麻烦,从 mailcow 那偷学来的

首先修改 docker 配置

cat > /etc/docker/daemon.json <<EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file": "3"
},
"ipv6": true,
"fixed-cidr-v6": "fd00:dead:beef:c0::/80",
"experimental":true,
"ip6tables":true
}
EOF

然后重启 docker 服务

然后把你那串 networks 的 yaml 都删了,默认就会分配 IPv6 了

楼主的配置估计是没有开 ip6tables
mason961125
2022-02-03 01:16:53 +08:00
HOMMEEN
2022-02-03 09:13:48 +08:00
@Showfom 感谢回复,daemon.json 已经在一开始配置好关于 ipv6 的那 4 行内容,一开始尝试的时候 docker compose 里面确实没写 networks ,但发现他并不会自动分配,才尝试手动添加
HOMMEEN
2022-02-03 09:14:30 +08:00
@mason961125 配置了并且也重启了不起作用🙈
Showfom
2022-02-03 09:19:32 +08:00
@HOMMEEN #3 我看你配置文件里想给 docker 分配公网 IPv6 ?那你何必用 bridge 模式呢,直接 host 模式吧
HOMMEEN
2022-02-03 13:34:51 +08:00
@Showfom 唔 谢谢。刚才新建了个 network 吧容器添加进去好像就可以用了
Showfom
2022-02-03 13:43:41 +08:00
@HOMMEEN #6 给容器分配公网 IP 不如直接 host 模式方便
Buges
2022-02-03 13:54:09 +08:00
你没发现你容器的 ipv4 也和你写的不一样吗。。
你根本就没把容器添加到你声明的网络中。
HOMMEEN
2022-02-03 14:22:02 +08:00
@Showfom 请教几个关键词 之前有这么想过但是搜不到我想要的
Showfom
2022-02-03 14:27:57 +08:00
@HOMMEEN #9 ports 直接删掉,然后 network 直接用 host ,放 restart 下面

network_mode: host
Showfom
2022-02-03 14:30:25 +08:00
楼主你理解错了一点,你要给 docker 分配的 IPv6 地址,其实是得内网地址用 bridge 模式才好,不然你这样要给容器分配公网地址新手很容易出错

不过 linuxserver 打包的容器都还行,直接看他们源码,也没有啥暴露的服务,直接 host 模式你就可以直接用宿主机的网络啦
HOMMEEN
2022-02-03 14:36:02 +08:00
@Buges 发现了所以我在第二张图里标注了...后来我新建了个网络吧容器添加进去,容器倒是能获取到 v6 的地址,但没法访问外网...
HOMMEEN
2022-02-03 14:49:21 +08:00
@Showfom 诶!直接不要端口映射吗?这些好像都是镜像规定要设置的端口,那如果要访问他 webUI 咋办?之前也有试过 host 模式,用`docker inspect [容器名]`查看他的 v6 然而并里面是空的。感谢大佬耐心指教,我真是又菜又爱玩...
Showfom
2022-02-03 14:51:48 +08:00
@HOMMEEN #13 用 host 模式就无法用端口映射

你看他 dockerfile 是不是已经默认映射了你要用的那几个端口
HOMMEEN
2022-02-03 15:07:58 +08:00
@Showfom 唔 真的可以。用 host 模式创建容器之后,进入容器后台前面现实的就不是容器的名字而是宿主机的名字了对吧?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/831718

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX