手把手教你如何给 Docker 开启 IPv6 网络支持

开源Linux

共 4146字,需浏览 9分钟

 ·

2021-08-20 15:44

关注「开源Linux」,选择“设为星标”
回复「学习」,有我为您特别筛选的学习资料~

Docker默认是不开启IPv6支持的,但是我们某些业务往往又需要IPv6的支持,特别是IPv6普及大势所趋,本文主要介绍的是如何开启Docker桥接网络IPv6支持,这篇文章具体操作仅供参考,建议以官方文档为准。

本文最重要的先决条件是主机商已经分配给你一个公网IPv6地址段,我们可以通过查看主机控制面板中信息、询问主机供应商或者直接SSH登录主机使用命令ip -f inet6 addr show eth0获取。命令方式获取的ipv6地址输出如下:

6: eth0:  mtu 9000 
    inet6 2607:f0d0:1002:51::4/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::230:48ff:fe33:bc33/64 scope link 
       valid_lft forever preferred_lft forever

其中inet6 2607:f0d0:1002:51::4/64 scope global这行指示的IPv6地址是我们需要的目标地址,注意我们这里选取的是公网IP,也就是后面scope global指示的,大家注意到后续还有一个fe80开头的IPv6地址,这个后面没有global,也就是通常意义内网IPv6,本文不使用,当然读者可以根据实际需要选择内网IPv6继续参照下面介绍的步骤完成操作。

1IPv6地址段划分

Docker可以配置多个虚拟网络,对于IPv4来说通过形如172.17.0.1/16、172.18.0.1/16、172.19.0.1/16这样内网私有IP地址段配置多个IPv4虚拟网段,那么同样的道理IPv6也建议划分多个段,如果手动划分不便,可以通过IPv6 Subnetting Calculator自动划分,如下图所示:

比如刚才的IPv6地址划分为4个网段如下:

2607:f0d0:1002:51::/66
2607:f0d0:1002:51:4000::/66
2607:f0d0:1002:51:8000::/66
2607:f0d0:1002:51:c000::/66

2配置默认Docker IPv6

编辑Docker配置文件/etc/docker/daemon.json,如果该文件不存在,请手动建立。配置文件内容如下,如果你已有的配置文件缺少相应的配置项,添加上即可,没有必要完全覆盖内容。

{
  "experimental"true,
  "ipv6"true,
  "ip6tables"true,
  "fixed-cidr-v6""2607:f0d0:1002:51::/66"
}

这里ip6tables是指由Docker自动配置IPv6的防火墙规则,如果你希望自己手动配置,请改为false或者移除此项,否则容器将无法连接IPv6网络;fixed-cidr-v6则是我们划分的子网段的第一个,这里仅作示例请读者根据实际情况修改。

完成配置后请使用systemctl restart docker重启docker服务生效。完成此步后Docker算是完成对于IPv6的支持了。

3配置Docker Compose的IPv6支持(可选)

这个主要是我编排容器时用的比较多,这里也记录一下作为一个备忘吧。

Docker Compose的配置文件内容关于IPv6部分重点是网络节配置,如果另外配置网络的话,必须选择与默认daemon.json不同的IPv6子网段,例如:

networks:
  example:
    enable_ipv6: true
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "true"
    ipam:
      config:
       - subnet: 172.23.0.0/16
       - subnet: "2607:f0d0:1002:51:4000::/66"
         gateway:2607:f0d0:1002:51:4000::1

这里example网络我们通过配置开启IPv6支持,其中网络段配置IPv4是172.23.0.0/16,IPv6选用余下的第二个网段2607:f0d0:1002:51:4000::/66注意这里不能和daemon.json配置的IPv6网段一样。这里的IP配置同样是一个示例,读者请根据实际情况进行修改。

参考资料

https://docs.docker.com/config/daemon/ipv6/



往期推荐



知乎:电脑长时间不关机会缩短电脑寿命吗?

100 道 Linux 常见面试题,建议收藏!

黑客 Shell 神技:掩盖 Linux 服务器上的操作痕迹

彻底搞懂 Nginx 的五大应用场景

BPF、eBPF、XDP 和 Bpfilter……这些东西是什么?

一网打尽大厂MongoDB面试题

Docker  容器技术使用指南

Docker容器网络通信原理分析

绕过 Docker ,大规模杀死容器

k8s和Docker关系简单说明

巧用 Docker 快速部署 GPU 环境

基于Docker&Kubernetes构建PaaS平台基础知识梳理

Docker中级篇,看这篇就对了

面试题|Docker的优缺点

Docker的三种网络代理配置

详解Docker中Image、Container与 Volume 的迁移

优化 Docker 镜像大小常见方法

关注「开源Linux」加星标,提升IT技能


点个在看少个 bug 👇

浏览 41
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报