Docker IPv6 配置

Docker 0 默认不开启 IPv6 配置, 但是在某些场景我们又需要 IPv6 网络的支持, 特别是随着 IPv6 的普及,以后使用 IPv6 的场景会越来越多。

注解

本教程假设您的服务器拥有公网 IPv6 地址段, 并且 IPv6 地址段Docker 启用 IPv6 支持Docker 启用 IPv6 支持为: 1111:1111:1111:1111::/64

Docker 启用 IPv6 支持

首先编辑 /etc/docker/daemon.json 文件,把如下配置添加到配置文件中:

注解

如果 /etc/docker/daemon.json 文件不存在,手动创建即可。

{"ipv6": true,"fixed-cidr-v6": "1111:1111:1111:1111::/64"
}

重启 docker 服务 systemctl restart docker

宿主服务器配置

如果我们的 Docker 容器需要使用 IPv6 公网地址, 我们还需要配置宿主机器的 路由/转发 规则,允许宿主机 路由/转发 Docker 容器的 IPv6 流量。

注解

这里我们这里假设宿主机的默认 IPv6 网卡名称为 eth0

/etc/sysctl.conf 配置

我们需要宿主机允许转发 IPv6 流量 & 邻居发现消息:

net.ipv6.conf.all.forwarding=1
net.ipv6.conf.all.proxy_ndp=1
net.ipv6.conf.default.proxy_ndp=1
# docker0 是 docker 默认的网桥 (bridge)
net.ipv6.conf.docker0.proxy_ndp=1
# eth0 是默认的网卡
net.ipv6.conf.eth0.proxy_ndp=1

使用 sysctl -f 重载系统配置。

ndppd 配置

因为 Linux IPv6 的 ndp 邻居发现配置仅允许单个 IP 配置(IPv6 /128), 因此我们使用 ndppd 守护进程来自动转发邻居发现消息。

注解

理论上我们也可以手工一条一条的配置所有 IPv6 邻居发现消息转发规则。

apt install ndppd

/etc/ndppd.conf 写入如下配置:

route-ttl 30000
address-ttl 30000
proxy eth0 {router yestimeout 500autowire nokeepalive yesretries 3promiscuous nottl 30000rule 1111:1111:1111:1111::/64 {staticautovia no}
}

注解

ndppd 详细配置参见: https://github.com/DanielAdolfsson/ndppd/blob/master/ndppd.conf-dist

systemctl restart ndppd

docker-compose 启用 IPv6

docker-compose.yaml 可以使用类似如下的配置启用 IPv6 地址:

version: "2.4"networks:ipv6_network:enable_ipv6: truedriver: bridgeipam:driver: defaultconfig:- subnet: "172.16.238.0/24"- subnet: "1111:1111:1111:1111:1::/80"

小技巧

subnet 中的 IPv6 地址不要直接使用 1111:1111:1111:1111::/64, 否则可能会导致路由混乱(Docker 容器无法正常使用 IPv6 网络)。

使用 1111:1111:1111:1111::/64 的任意子网段都可以。

警告

docker-compose 文件 必须使用 version: 2, version: 3 不支持 enable_ipv6 配置 2 。

如果您已有旧的容器在运行(网络配置发生了变化),则需要先销毁容器 docker-compose down 然后再重新创建 docker-compose up

实现原理

Docker 启用 IPv6 功能的原理实际就是:

  1. 配置宿主机器启用 IPv6 路由/转发 功能

    这是必须的,否则宿主机器不会 路由/转发 Docker 的 IPv6 流量。

  2. Docker 底层网络实现就是在宿主机器创建网桥 (bridge 模式)

    所以一切关于网桥配置的原理都可以应用到这里。

  3. 给宿主机配置正确的 路由/转发 规则

原文链接:Docker IPv6 配置 — 奇遇科技博客 2021 文档 (qiyutech.tech)https://blog.qiyutech.tech/202112/30_docker_ipv6/

怎样配置 Docker IPv6 ?相关推荐

  1. IDEA 配置 Docker

    IDEADocker Docker安装 资源下载 链接: https://pan.baidu.com/s/1B6JbwZD5jM86vy8sryOusQ 提取码: 4p5t 资源包含 Docker的e ...

  2. 《Cisco IPv6网络实现技术(修订版)》一2.6 配置练习:使用Cisco路由器配置一个IPv6网络...

    本节书摘来自异步社区<Cisco IPv6网络实现技术(修订版)>一书中的第2章,第2.6节,作者[加]Régis Desmeules,更多章节内容可以访问云栖社区"异步社区&q ...

  3. docker omv 防火墙_OpenMediaVault(OMV)配置Docker

    [TOC] OMV配置Docker docker属于omv拓展(omv-extras)插件,如果没有安装拓展包是搜索不到的,如果你还没有安装omv-extras的话,请先安装OMV安装omv-extr ...

  4. wsl2设置挂载_Windows下的Linux子系统安装,WSL 2下配置docker

    Windows下的Linux子系统安装,WSL 2下配置docker 前提条件: 安装WSL 2需要Windows 10版本是Build 18917或更高,首先先确认系统版本已升级. 在"启 ...

  5. Windows 上配置Docker Desktop 的k8s

    前言:打算在windows上配置docker & k8s 的环境来实现abp vnext 的k8s部署,遂进行一系列的安装和配置 在docker desktop 上启动k8s但是一直在star ...

  6. [respberry pi3][suse] 配置docker

    [respberry pi3][suse] 配置docker [respberry pi3][suse] 配置docker arm64 suse上总的软件还是比较少的,特别是对32bit的一些支持,比 ...

  7. 简单配置 docker swarm

    简单配置 docker swarm #准备三台CentOS7 #IP划分 192.168.1.201       virtualBox1 192168.1.202        virtualBox2 ...

  8. centos7配置Docker镜像加速器

    创建并编辑文件 [root@localhost ~]# cd /etc/docker/ [root@localhost docker]# [root@localhost docker]# ls key ...

  9. linux配置端口ipv6地址,linux配置ipv6地址命令

    linux配置ipv6地址命令 模块加载: /etc/module.conf中增加下列行: alias net-pf-10 ipv6 配置ipv6: /etc/sysconfig/network中增加 ...

  10. docker mysql配置 丢失_Ubuntu16.04服务器环境配置 – Docker、MySQL、Redis

    Ubuntu16.04 服务器环境配置 – Docker.MySQL.Redis 安装Docker 1. 卸载旧版本 sudo apt-get remove docker docker-engine ...

最新文章

  1. MySQL 数据库规范--调优篇(终结篇)
  2. Android 图形架构
  3. 给SAP Spartacus开源项目提交代码时的注意事项
  4. Windows Server入门系列之十 注册表的基本使用
  5. 人的烦恼大部分来自于没钱
  6. 干货||Selenium自动化测试网页
  7. 2016北京集训测试赛(十三) Problem B: 网络战争
  8. 使用PosixFilePermission的Java设置文件权限
  9. 【原创】软件测试基础流程
  10. python 新式类和旧式类
  11. 把自定义encoder加入ffmpeg源码
  12. Half-space Hyperplane
  13. seaborn库——分类图
  14. 多旋翼无人机ROSC++开发例程(四):基于Prometheus开源项目与Casadi开源优化求解器的模型预测控制简单应用例程
  15. org.springframework.core.styler包解读
  16. swift之汤姆猫实现(UIImageView动画播放)
  17. 建立您自己的动画贺卡
  18. Java实现库存防超卖_高并发场景-订单库存防止超卖
  19. 使用U盘安装openSUSE-Leap-15.4-DVD-x86_64
  20. css 实现右边div高度随着左边div内容的增加,右边div的高度也增加(左边div与右边div高度保持一致)

热门文章

  1. 技巧推荐 PDF文件怎么转成word文档
  2. html 按钮id,获取当前按钮或者html的ID名称
  3. Ubuntu开启BBR加速
  4. 英雄无敌王朝 服务器维护,魔法门之英雄无敌王朝全新护国神器玩法介绍_魔法门之英雄无敌王朝全新护国神器怎么玩_玩游戏网...
  5. 【思想感悟】站在巨人的肩膀上
  6. 关于NaN、undefined、null——基础必懂
  7. Mac中隐藏/显示文件或文件夹
  8. 玩平衡小车系列—TB6612FNG与直流电机控制教程
  9. hdu-2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 HDU - 2191(多重背包)
  10. css 设置手机浏览器背景图片填充整个页面的小问题级解决方法