启用docker对ipv6的支持_docker支持ipv6-csdn博客


本站和网页 https://blog.csdn.net/gybshen/article/details/125499001 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

启用Docker对ipv6的支持_docker支持ipv6-CSDN博客
启用Docker对ipv6的支持
Cloud-Future
已于 2022-06-28 18:07:28 修改
阅读量8.9k
收藏
19
点赞数
分类专栏:
Docker
网络
文章标签:
docker
linux
运维
ipv6
于 2022-06-28 14:13:34 首次发布
本文为博主原创文章,未经博主允许不得转载。
本文链接:
https://blog.csdn.net/gybshen/article/details/125499001
版权
同时被 2 个专栏收录
17 篇文章
0 订阅
订阅专栏
6 篇文章
我的环境:
OS:
CentOS 7.9
Docker:
20.10.7
1. 启用Docker守护进程对ipv6的支持
要想在Docker容器或者Swarm服务中使用ipv6,首先需要在
Docker守护进程中启用对ipv6的支持
,具体做法如下:
编辑docker守护进程的配置文件
/etc/docker/daemon.json
(若不存在需要手动创建该文件)
"experimental"
true
"ip6tables"
"ipv6"
"fixed-cidr-v6"
"2001:db8:1::/64"
设置为true,启用对ipv6的支持。
fixed-cidr-v6
,配置ipv6子网。
ip6tables
,启用ip6tables,docker会在ip6tables中配置docker网络相关的规则链。
experimental
,启用实验特性,ip6tables是docker的一个实验功能,所以需要设为true。
重载配置文件
sudo
systemctl reload
&&
systemctl restart
现在你可以使用
docker network create --ipv6 ...
创建一个支持ipv6的网络了。另外你也可以在启动容器时使用
--ip6
参数来使容器支持ipv6。
审查默认
bridge
network inspect bridge
可以看到已经配置成功!
接下来就可以在容器中使用ipv6了!
2. 在Docker容器中使用ipv6
注意:以下演示依赖于上一步的配置
2.1 创建一个容器
使用nginx做演示:
启动一个容器,此处并没有指定网络所以默认使用名为
的网络,该网络在上一步已经支持ipv6了!
run --name
test
-p
81
:80 -d nginx:1.21.6
进入容器内部查看网阔配置:
exec
-it
ifconfig
eth0:
flags
=
416
<
UP,BROADCAST,RUNNING,MULTICAST
>
mtu
1500
inet
10.156
.10.2
netmask
255.255
.255.0
broadcast
.10.255
inet6 fe80::42:aff:fe9c:a02
prefixlen
64
scopeid 0x2
link
inet6
2001
:db8:1::242:a9c:a02
scopeid 0x
global
ether 02:42:0a:9c:0a:02
txqueuelen
Ethernet
RX packets
3923
bytes
9184337
8.7
MiB
RX errors
dropped
overruns
frame
TX packets
2836
192127
187.6
KiB
TX errors
carrier
collisions
容器内部已经分配了一个ipv6地址!
2.2 容器与宿主机通信
在上一步容器已经有一个ipv6地址了,但是如果
宿主机没有一个合适的ipv6地址还是不能通过ipv6与宿主机通信
。比如下面我用的宿主机网络配置:
ens192
ens192:
192.168
.30.72
.0.0
.255.255
inet6 fe80::54f2:a4e2:f5cc:711a
ether 00:0c:29:c7:26:f5
1000
38098236
6981689290
6.5
GiB
3567426
953026
578286181
551.4
尽管该接口有一个ipv6地址
fe80::54f2:a4e2:f5cc:711a
但是它是本地链路上的私有地址(fe80开头的地址属于私有地址)。私有地址是允许在本地链路上使用,且数据包不会跨链路转发。
所以,容器要想和宿主机通信,宿主机必须有一个非私有ipv6地址,如果默认没有就需要手动配置一个:
编辑网络接口配置文件
/etc/sysconfig/network-scripts/ifcfg-ifName
,例如我的测试宿主机网卡名称为
,那就编辑
/etc/sysconfig/network-scripts/ifcfg-ens192
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_PRIVACY=no
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
IPV6ADDR=2018::27
NAME=ens192
UUID=08b8bead-340c-4708-8656-2af2394a7c1c
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.30.72
PREFIX=16
GATEWAY=192.168.30.1
DNS1=223.5.5.5
保存,执行网络服务重启:
systemctl restart network
查看网卡配置:
2018
::27
38106119
6982319769
3568059
953451
578328655
551.5
再次进行容器内ping宿主机:
ping6
PING
56
data bytes
bytes from
::27:
icmp_seq
ttl
time
0.135
ms
0.137
0.145
0.152
^C
---
ping
statistics ---
packets transmitted,
received,
% packet loss,
4000ms
rtt min/avg/max/mdev
/0.141/0.152/0.006 ms
已经通了!
3. 使docker-compose 编排文件启动的服务支持ipv6
以下操作也须在docker引擎开启ipv6下进行。
3.1 对于版本2的编排文件
对于版本2的编排文件,可以直接在
networks
配置节点下启用ipv6,下面是个例子:
version
'2'
其他services定义省略。。。
example
enable_ipv6
driver
driver_opts
com.docker.network.enable_ipv6
"true"
ipam
config
subnet
172.23.0.0/16
"2607:f0d0:1002:51:4000::/66"
3.2 对于版本3的编排文件
对于版本3的编排文件,无法像上边那样直接在编排文件中配置网络并开启ipv6,需要按照下面的方式进行:
首先需要通过命令行创建一个网络并启用ipv6:
network create -d bridge
--ipv6 --subnet
:db8:1::1/64
--subnet
.11.0/24 extnetwork
通过上面的命令创建了一个子网为
2001:db8:1::1/64
的名字为
extnetwork
的ipv6网络且支持ipv4。
编排文件:
'3'
services
app
image
7.16.1
container_name
restart
always
privileged
#省略其他服务。。。
external
优惠劵
关注
点赞
觉得还不错?
一键收藏
知道了
评论
要想在Docker容器或者Swarm服务中使用ipv6,首先需要在Docker守护进程中启用对ipv6的支持,具体做法如下:编辑docker守护进程的配置文件 (若不存在需要手动创建该文件)设置为true,启用对ipv6的支持,配置ipv6子网。重载配置文件现在你可以使用 创建一个支持ipv6的网络了。另外你也可以在启动容器时使用参数来使容器支持ipv6。审查默认网络可以看到已经配置成功!接下来就可以在容器中使用ipv6了!使用nginx做演示:启动一个容器,此处并没有指定网络所以默认使用名为的
复制链接
扫一扫
专栏目录
常见问题解决
01-09
映射端口时仅有
IPv6
无法到IPv4
启动
某服务,只显示
的端口信息。ipv4 无端口信息,导致外部无法通过 ipv4 访问服务,报 Connection refused 错误
解决方法
在服务器上禁用
vim /etc/default/grub
在第6行中增加
.disable=1
GRUB_CMDLINE_
LINUX
.disable=1 crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quie
下CentOS7配置
IPV6
支持
Nginx访问
繁星
06-13
1702
1 条评论
您还未登录,请先
登录
后发表或查看评论
aliyun-ddns:阿里云动态域名工具,
02-05
</ s> </ s> </ s>
功能
通过在线API获取公网IPv4 / v6地址,更新到域名A / AAAA记录。
通过本地网卡获取公网或内网IPv4 / v6地址,更新到域名A / AAAA记录。
更新多个域名的记录。
更新指定线路的记录。
容器,
x64,ARMv7和ARMv8。
IP发生变化时,使用WebHook通知。
使用方法
码头工人
run -d --restart=always --net=host \
-e "AKID=[ALIYUN's AccessKey-ID]" \
-e "AKSCT=[ALIYUN's
ip设置 net 与 宿主机器 虚拟机_CentOS7宿主机设置DHCP服务器分配
给虚拟机
weixin_30449673的博客
01-17
491
前言懒….反正就是云筏KVM分配公网
给KVM的实现方式,zkeys不
所以我们只能自己来了…宿主机配置网卡配置共网网桥 2a01:4f8:212:1c60::1/128 网关为公网网关内网网桥 2a01:4f8:212:1c60::1/64 网关留空路由配置简单来说2a01:4f8:212:1c60::1/64全部走内网网桥,其余流量走公网网桥ip -6 route自己看看del...
OpenWRT x86,使用
安装rustdesk IPV4和
同时
,远程桌面控制方法
最新发布
nczywq的博客
03-27
434
ID服务器填你路由器的域名,key填hbbs日志中的key,当前也可以去你挂载目录中找到id_ed25519,此文件中也是存放的key,这样这台电脑 就可以去控制其它装有rustdesk的电脑了,不控制别人电脑的rustdesk客户端不要填key,防止服务器被滥用。8:回到
容器界面,运行刚刚添加的hbbs和hbbr容器,打开hbbs - 日志,查看是否有错误,正常的应该是如下界面,第二行为远控的key,控制别人的客户机需要使用该key,relay-servers是路由器的域名。
:配置
热门推荐
刘元林的博客
09-06
2万+
首先,
肯定没有IPv4好;其次,如果可以使用
的host网络模式,就可以借用host的
协议栈进行通信,而无需多余配置;以实现容器
通信的需求。
开启
vi /etc/
/daemon.json
"
": true,
"fixed-cidr-v6": "fd00:db8:1::/64"
开启ip6tables
# 设置ip6tables为true,该功能为experime.
容器开启
u013571586的博客
07-14
9872
云原生之深入解析
如何开启
╰つ栺尖篴夢ゞ
06-17
3413
前置条件:确保自己的设备被分配了一个
。创建一个
的 bridge 网络。其中 --subnet 参数为上一步获取到的
网段的子网(自定义 bridge 网络,前缀长度不限制,可以大于于 80)。通过
network inspect my-net-
命令检查是否生效。若生效,则 Enable
值为 true,IPAM.Config[1].Subnet 是上一步配置的 fixed-cidr-v6。
容器
启用
地址方法,用
地址访问容器方法流程、创建一个nginx容器用
地址访问测试流程
崔崇鑫的博客,你linux/云运维工作中的百科全书。
12-01
3346
直接浏览器输入ipv4的地址,不报错就行【我下面显示ccx是因为我修改过nginx的默认文件内容了】进入以后,能ping通网关和其他v6地址,没问题。
群晖
实现
访问
SabreWulf
09-28
1万+
概述:群晖
默认没有没有开启
,需要修改
的配置文件。
nat:使用
NAT 扩展
,类似于 IPv4
08-05
nat 该项目模仿
为 IPv4 执行 NAT 的方式并将其应用于
。 跳转到立即开始。为什么我需要这个? 不幸的是,最初创建
时并没有考虑到
。 它是后来添加的,虽然已经走了很长一段路,...
Mac OSX系统
远程API功能
09-30
主要介绍了Mac OSX系统
远程API功能的相关资料,需要的朋友可以参考下
容器中
的中文字体
08-30
容器启动报错的解决方法
Cloud-Future的博客
08-04
: Error response from daemon: OCI runtime create failed: unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v2.task/moby/40b48d6f9ea6c0bbcbaa9413adb1914b41e4750465125742203b5d2cb72d3c06/log.json: no such file or director
服务启动报错的解决方法
07-29
8385
Loaded: loaded (/usr/lib/systemd/system/
.service; enabled; vendor preset: disabled)
Active: failed (Result: start-limit) since 四 2021-07-29 10:20:32 CST; 8s ago
Docs: https://docs.
.com
Process: 2656 ExecStart=/usr/bin/
d -H fd://
Linux
普通用户无法执行
命令的解决方法
02-24
3940
问题描述
当在
系统安装完
之后,直接使用普通用户执行
命令,会出现没有权限的错误。
例如执行下面的命令:
pull ubuntu
会出现
Using default tag: latest
Got permission denied while trying to connect to the
daemon socket at unix:///var/run/
.sock: Post "http://%2Fvar%2Frun%
在IDEA中使用
构建打包并部署项目
03-31
1913
借助于IDEA中
插件,可以非常方便的将我们本地项目打包部署到
engine中。
IDEA 默认已经安装了
插件,所以无需另外安装!
Engine的远程连接
默认
是不能通过外部连接的,所以需要对远程
做一些配置:
修改
的配置文件/etc/
/daemon.json(如果不存在手动创建):
"hosts": [
"tcp://0.0.0.0:237
之镜像构建及构建过程
03-14
1624
通过读取
file中的指令来自动构建镜像。
file是一个包含了所有能够在命令行调用的命令的文本文档,这些命令称为指令用来指示构建镜像的步骤。用户可以使用
build命令执行一系列的命令行指令来构建镜像。
build用法
build命令用于根据
file和context(构建上下文)构建镜像。context构建上下文可以是本地的一个目录或者是git仓库的URL,这个目录或者git仓库都包含了用于构建镜像的必要文件。
conte
compose
02-21
Compose 是一个用于定义和运行多个
容器的工具。它允许您使用一个 YAML 文件来配置应用程序的服务、网络和卷等方面。在
Compose 中,可以通过配置网络来
要在
Compose 中
,您需要进行以下步骤:
1. 确保您的
守护进程已经
。可以通过编辑
配置文件(通常是 `/etc/
/daemon.json`)并添加 `"
": true` 来
2. 在
Compose 文件中,您可以使用 `networks` 部分来定义。在网络定义中,您可以指定 `driver: bridge` 并添加 `enable_
: true` 来
yaml
version: '3'
services:
myservice:
image: myimage
networks:
- mynetwork
mynetwork:
driver: bridge
enable_
: true
```
3. 在服务定义,您可以使用 `networks` 部分将服务连接到指定的网络。
```yaml
这样,您就可以在
了。请注意,
的配置和使用可能因为您的网络环境和需求而有所不同,您可能需要进一步了解和配置相关的网络设置。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
CSDN认证博客专家
CSDN认证企业博客
码龄8年
暂无认证
158
原创
4万+
周排名
114万+
总排名
68万+
等级
5068
积分
342
粉丝
458
获赞
173
1908
私信
热门文章
Spring Boot整合Elasticsearch,最新最全教程
92899
C++实现简单的计时器
38848
什么是JNDI?
33823
JDK的安装及环境变量的配置
30077
浅谈前后端分离开发模式
25717
分类专栏
1篇
nginx
HTTP
6篇
Zookeeper
4篇
Spring Cloud
2篇
Spring
38篇
elasticsearch
7篇
Redis
17篇
Tomcat
Java
42篇
Java web
15篇
MySQL
12篇
Struts2
5篇
MyBatis
3篇
Maven
C/C++
设计模式
8篇
Mongodb
成长
算法
前端
11篇
团队协作
13篇
Linux Shell
虚拟化
安全
最新评论
Spring Cloud 出现No instances available for user-service异常
Cloud-Future:
spring:
cloud:
inetutils:
preferred-networks: 你的网卡名称
百里莫凌:
我的注册中心是eureka,按照文中的办法操作了但是服务还是注册到虚拟机ip上了怎么办
chen_gr:
分钟的显示有问题,应该为(t%3600)/60
img标签src引用网络图片,响应403的解决方法
戒不掉丿寂寞:
大佬真棒!
IDEA中强大的Maven依赖管理工具
火神文:
新版好像没有这个标签视图了
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
最新文章
Java Runtime 类详解
Java 生成X.509 V3证书
nginx热升级
2022年
21篇
2021年
45篇
2020年
18篇
2019年
36篇
2018年
2017年
27篇
2016年
目录
评论 
被折叠的 
 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
红包个数最小为10个
红包总金额
红包金额最低5元
余额支付
当前余额
3.43
前往充值 >
需支付:
10.00
取消
确定
下一步
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值