V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
powersee
V2EX  ›  问与答

请问 docker 如何让容器获得可以用的 ipv6 地址?

  •  
  •   powersee · 2019-08-31 12:32:10 +08:00 · 2476 次点击
    这是一个创建于 1930 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在网上也看来很多教程,说的都是

    vi /etc/docker/daemon.json
    

    然后添加

    {
        "ipv6": true,
        "fixed-cidr-v6": "2001:db8:1::/64"
    }
    

    接着再重启,但是我这样试了,分配到的地址,用电脑 ping6 都 ping 不通。然后我看了下路由器的 ipv6,将前面四段替换掉配置里的这个,变为

    "fixed-cidr-v6": "2409:8a55:f2d7:10e0::/64"
    

    这是容器获得的地址是:

    2409:8a55:f2d7:10e0:0:242:ac11:3
    

    而刚才是:

    2001:db8:1::0:242:ac11:3
    

    依然都 ping 不通。

    然后我用 docker 创建一个 Ubuntu 容器。在里面

    ping6 ipv6.baidu.com
    

    也是不行……

    然而用电脑是可以的。

    为此我又到服务器上面去试,结果还是一样,容器里面的 ipv6 根本就没法用。

    特此才来发帖求助,求大佬解答,感激不尽。

    1 条回复    2020-12-06 13:38:38 +08:00
    qq296015668
        1
    qq296015668  
       2020-12-06 13:38:38 +08:00   ❤️ 1
    $ vi /etc/docker/daemon.json
    {
    "ipv6": true,
    "fixed-cidr-v6": "2001:db8:1::/64"
    }
    这里的部署是正确的,如果你想用 ipv6 nat 的话,添加下面一条命令就行
    $ ip6tables -t nat -A POSTROUTING -s 2001:db8:1::/64 -j MASQUERADE
    # 这里的 2001:db8:1::/64 地址是上面 /etc/docker/daemon.json 的 fixed-cidr-v6 内容,根据实际情况修改

    这样你的容器就能访问 ipv6 地址了,这里的 2001:db8:1::/64 是内部地址,和 ipv4 一样,实际都是使用宿主的 ip 去访问的

    我也是遇到这个问题然后搜索到这个提问,希望能帮到有需要的人
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5122 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:45 · PVG 14:45 · LAX 22:45 · JFK 01:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.