由于目前Docker 在IPv6网络中运行的相关配置并非默认自动生成的,所以需要大家根据自己的网络环境来具体做一些相应配置,具体如下:

本次操作是在 Ubuntu16/18或者CentOS7 OS上面 通过docker官网手册安装方式 安装的Docker程序

第一步 在 docker 配置文件 添加IPv6配置参数

配置文件路径均为/etc/docker/daemon.json
如果改文件不存在,请直接创建
 
如果docker运行的寄主机已经成功获取到IPv6公网地址并能够正常访问IPv6公网资源后,还不知道怎么给docker分配对应的IPv6地址,
则可直接将 docker 的默认IPv6网段设置为 fc00:17:1:1::/64 (可以理解为IPv6的内网地址)
 
{
"ipv6": true,
"fixed-cidr-v6": "fc00:17:1:1::/64"
}

之后需要手动对刚才的IPv6内网地址设置NAT转换(因为docker 在IPv4的环境下会自动将内网地址做NAT转换)

并通过 -L 来查看NAT配置是否添加成功

ip6tables -t nat -A POSTROUTING -s fc00:17:1:1::/64 -j MASQUERADE
ip6tables -t nat -L

最后重新启动 docker 服务

systemctl restart docker

效果如下:

经过上述配置后,通过docker run 方式启动(利用默认的bridge网络模式)的容器即可自动获取到fc00:1:1::/64 网段中的IPv6地址。

并能够继承Host寄主机的网络资源环境。

如果你想使用 docker-compose 的方式来启动一组容器的话,那还需要对之前使用的 docker-compose.yml 文件进行部分升级,具体如下:

首先,compose的版本需要使用

version: '2.1'

然后在每一个services中添加网络参数(举例存在一个名为 app_net 的网络)

    networks:
app_net:

之后在yml文件的最后添加 app_net 这个网络的具体参数:

networks:
app_net:
driver: bridge
enable_ipv6: true
ipam:
driver: default
config:
- subnet: 172.19.0.0/24
gateway: 172.19.0.1
- subnet: fc00:32:1:1::/120
gateway: fc00:32:1:1::1

其中给这个网络分配的IPv6网段是 fc00:32:1:1::/120 (不要与之前deamon.json中的网段有重合),/120网段可以提供 256个的可用地址

然后把这个IPv6内网地址段(fc00:32:1:1::/120) 利用  ip6tables -t nat 的指令(同上)将该地址段成功添加到host 寄主机中的 IPv6 nat配置中即可

之后再用 ip6tables -t nat -L  查看是否添加成功

最后利用访问一些公网的IPv6地址来测试网络是否搭建成功即可。

Docker IPv6 网络环境配置的更多相关文章

  1. CentOS(六)--Linux系统的网络环境配置

    Linux系统下的网络环境配置,Linux.Unix就是网络的世界,所以在Linux系统中如何配置网络环境变量是至关重要的,这里将会给出3种Linux系统下网络环境配置的方法! 在配置网络环境之前,首 ...

  2. Linux虚拟机修改ip地址,查看网关,网络环境配置

    修改虚拟机的ip地址: 进入如下界面,直接修改子网ip即可. 查看网关: Linux网络环境配置: 第一种方式(自动获取): 说明:登陆后,通过界面来设置自动获取ip 我们先进入设置: 把自动连接勾上 ...

  3. docker从零开始网络(七) 配置daemon和容器

    启用IPv6支持 在Docker容器或swarm服务中使用IPv6之前,需要在Docker守护程序中启用IPv6支持.之后,您可以选择将IPv4或IPv6(或两者)与任何容器,服务或网络一起使用. 注 ...

  4. Windows Server 2008在网络环境配置打印机

    下面学习在Windows Server2008在网络环境搭建打印机服务器,打印机服务器也是很常用的,特别是在中大型企业里面,打印机数量比较多为方便管理,可以搭建一个打印机服务,这里介绍一下,本地打印机 ...

  5. linux网络环境配置

    第一种方法: (red hat) (1)用root身份登录,运行setup命令进入到text mode setup utility 对网络进行配置,这里可以进行ip,子网掩码,默认网关,dns的设置. ...

  6. 七、【Docker笔记】Docker中网络基础配置

    一个系统一般都包含多个服务组件,这些大量的服务组件不可能放在同一个容器中,这就需要多个容器之间可以互相通信.Docker提供了两种方式来实现网络服务:映射容器端口到宿主主机.容器互联机制. 一.端口映 ...

  7. docker的网络基础配置

    一.端口映射实现访问容器 当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-P或-p参数来指定端口映射.当使用-P标记时,Docker会随机映射一个49000~49900的端口至容器内部开放 ...

  8. 宿主机网络中其它机器与Docker容器网络互通配置

    前言 目前项目采用微服务架构进行开发,Nacos和其它服务部署到Docker中,Docker中容器采用的网络默认是桥接模式(Bridge),默认的子网码是172.17.0.1/16:宿主机是192.1 ...

  9. Linux 安装配置 NET模式网络环境配置

    1.下载linux:发行版 Ubuntu  REdHat centos Debain Fedora,SUSE,OpenSUSEcentos 6.xcentos 7.x在虚拟机(VmWare)上 安装l ...

  10. (原创)openvswitch实验连载2-cisco模拟器IOU-Web安装及网络环境配置

    IOU的使用可以选择自己到官网https://docs.google.com/file/d/0B2AgRhS2cfxCQ01tN2NrQ0pvNUk/edit下载iou-web 软件,然后部署在lin ...

随机推荐

  1. 网络编程懒人入门(十四):到底什么是Socket?一文即懂!

    本文由cxuan分享,原题"原来这才是 Socket",有修订. 1.引言 本系列文章前面那些主要讲解的是计算机网络的理论基础,但对于即时通讯IM这方面的应用层开发者来说,跟计算机 ...

  2. 《深入理解Mybatis原理》MyBatis初始化机制详解

    主要构件及其相互关系 主要构件: 主要的核心部件解释如下: SqlSession: 作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能 Executor:MyB ...

  3. [LC646]最长数对链

    题目概述 给出 n 个数对. 在每一个数对中,第一个数字总是比第二个数字小. 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面.我们用这种形 ...

  4. 深入理解 RESTful Api 架构-copy

    深入理解 RESTful Api 架构 周梦康 发表于 2016-01-03 分类于 笔记 61818 次浏览 标签 : REST   一些常见的误解 不要以为 RESTful Api  就是设计得像 ...

  5. 2020年最新版区块链面试题1-copy

    1. 什么是区块链? 回答:区块链是不间断的经济交易数字分类帐,可以进行编程,以记录不仅是金融交易,还可以记录几乎所有有价值的东西.简单来说,它是一个不可变记录的分散式分布式数据库,该数据库由计算机集 ...

  6. mysql数据库指定ip远程访问(设置远程连接),赋权操作

    mysql数据库指定ip远程访问(设置远程连接) 远程访问mysql报错,ip不允许链接的情况:错误号码1045Access denied for user '用户名' @'数据库地址' (using ...

  7. BGV12

    BGV12,论文:(Leveled) Fully Homomorphic Encryption without Bootstrapping 密钥交换 ️ 矩阵\(A_{N*n_2}\) 矩阵\(B_{ ...

  8. 在nginx上搭建php服务

    不同的操作系统会有不一样 我这里用的是centos系统 首先下载 yum install php php-fpm php-mysqlnd php-gd php-mbstring 其次我们需要修改配置文 ...

  9. React中的数据流管理

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:霜序 前言 为什么数据流管理重要? React 的核心思想 ...

  10. uniapp-中picker-view用户不触发channge事件也知道用户选择的值

    我们都知道,只用用户触发change事件的时候,我们才知道,用户选择的是哪一个值: 如何用户没有触发change事件,我们压根就不知道用户选择的是哪一个值: 那么什么时候,用户不会触发change事件 ...