已经按照这篇文章Docker 桥接网络开启 IPv6 支持中的步骤一步一步做下来了。 但是在配置 Docker Compose 的 IPv6 支持的时候,已经按照自己划分的网段配置好了,但是新建容器之后并没有分配给他 IPv6 ,这是啥原因?
1
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 |
2
mason961125 2022-02-03 01:16:53 +08:00
|
3
HOMMEEN OP @Showfom 感谢回复,daemon.json 已经在一开始配置好关于 ipv6 的那 4 行内容,一开始尝试的时候 docker compose 里面确实没写 networks ,但发现他并不会自动分配,才尝试手动添加
|
4
HOMMEEN OP @mason961125 配置了并且也重启了不起作用🙈
|
5
Showfom 2022-02-03 09:19:32 +08:00
@HOMMEEN #3 我看你配置文件里想给 docker 分配公网 IPv6 ?那你何必用 bridge 模式呢,直接 host 模式吧
|
8
Buges 2022-02-03 13:54:09 +08:00 via Android
你没发现你容器的 ipv4 也和你写的不一样吗。。
你根本就没把容器添加到你声明的网络中。 |
10
Showfom 2022-02-03 14:27:57 +08:00
|
11
Showfom 2022-02-03 14:30:25 +08:00
楼主你理解错了一点,你要给 docker 分配的 IPv6 地址,其实是得内网地址用 bridge 模式才好,不然你这样要给容器分配公网地址新手很容易出错
不过 linuxserver 打包的容器都还行,直接看他们源码,也没有啥暴露的服务,直接 host 模式你就可以直接用宿主机的网络啦 |
12
HOMMEEN OP @Buges 发现了所以我在第二张图里标注了...后来我新建了个网络吧容器添加进去,容器倒是能获取到 v6 的地址,但没法访问外网...
|
13
HOMMEEN OP @Showfom 诶!直接不要端口映射吗?这些好像都是镜像规定要设置的端口,那如果要访问他 webUI 咋办?之前也有试过 host 模式,用`docker inspect [容器名]`查看他的 v6 然而并里面是空的。感谢大佬耐心指教,我真是又菜又爱玩...
|
14
Showfom 2022-02-03 14:51:48 +08:00
|
15
HOMMEEN OP @Showfom 唔 真的可以。用 host 模式创建容器之后,进入容器后台前面现实的就不是容器的名字而是宿主机的名字了对吧?
|