docker compose ipv6的处理 容器互联的方法 docker CE 27.5.1

news/2025/1/26 10:41:38/文章来源:https://www.cnblogs.com/jackadam/p/18691576

简介

距离上一次折腾docker ipv6已经过了2年多了,docker版本也升级到27.5.1了。

docker内部对IPV6的支持也有了长足的进步。

结合近期使用docker compose,ipv6折腾的经验,记录笔记如下:

内部有了IPV6支持

推荐/etc/docker/daemon.json增加配置4项:

{"ipv6": true,"fixed-cidr-v6": "fc00::/7","experimental": true,"ip6tables": true
}

"ipv6": true

  1. 启用Docker的IPv6支持
  2. 允许容器使用IPv6网络
  3. 如果不开启此选项,容器将只能使用IPv4

"fixed-cidr-v6": "fc00::/7"

  1. 设置Docker IPv6地址的固定CIDR范围
  2. fc00::/7是一个私有IPv6地址段
  3. Docker会从这个地址段中为容器分配IPv6地址
  4. 类似于IPv4中的172.17.0.0/16默认网段
  5. 格式为<IPv6前缀>/<子网掩码长度>

"experimental": true

  1. 启用Docker的实验性功能
  2. 允许使用一些尚在开发或测试阶段的特性
  3. 某些新的网络功能可能需要开启此选项
  4. 实验性功能可能在未来版本中变化或移除

"ip6tables": true

  1. 启用Docker的IPv6防火墙规则管理
  2. 允许Docker自动管理IPv6的iptables规则
  3. 控制容器间的IPv6通信和端口映射
  4. 确保IPv6网络安全性和正确路由

重启docker

systemctl daemon-reload
systemctl restart docker

yaml使用

简单使用

services: #服务apache:   #服务名image: httpd:alpine  #镜像名称ports:          #开放端口映射,家庭宽带封禁80端口- 18080:80     #冒号左边是宿主机开放端口,冒号右边是容器开放端口
# 定义网络配置
networks:#未设置网络时,使用默认网络default:#启用ipv6enable_ipv6: true

这是就可以直接从互联网访问18080了

定制使用-限定默认网络

services: #服务apache:   #服务名image: httpd:alpine  #镜像名称ports:          #开放端口映射,家庭宽带封禁80端口- 18443:80     #冒号左边是宿主机开放端口,冒号右边是容器开放端口
# 定义网络配置
networks:#未设置网络时,使用默认网络default:#自定义默认网络名name: mynet#启用ipv6enable_ipv6: true

定制使用-限定指定网络

services: #服务apache:   #服务名image: httpd:alpine  #镜像名称ports:          #开放端口映射,家庭宽带封禁80端口- 18443:80     #冒号左边是宿主机开放端口,冒号右边是容器开放端口networks:       #网络- frontnet         #属于网络frontnet
# 定义网络配置
networks:#设置网络时,使用frontnet网络frontnet:#定义网络名name: front_net#启用ipv6enable_ipv6: true

互联互通示例(AI生成)

services:apache:image: httpd:alpinenetworks:- frontend    # 连接到前端网络- backend     # 连接到后端网络mysql:image: mysql:8networks:- backend         # 连接到后端网络nginx:image: nginx:alpinenetworks:- frontend    # 只连接到前端网络# 定义多个网络
networks:frontend:    # 前端网络name: front_netenable_ipv6: trueipam:driver: defaultconfig:- subnet: fc00:0:0:1::/64    # 前端网络的IPv6子网backend:     # 后端网络name: back_netenable_ipv6: trueipam:driver: defaultconfig:- subnet: fc00:0:0:2::/64    # 后端网络的IPv6子网management:  # 管理网络name: mgmt_netdriver: bridgeenable_ipv6: trueipam:driver: defaultconfig:- subnet: fc00:0:0:3::/64    # 管理网络的IPv6子网

测试

两个容器默认互通

两个容器均不定义网络,使用默认网络。

services: #服务apache:   #服务名image: httpd:alpine  #镜像名称container_name: apache  #自定义容器名ports:          #开放端口映射,家庭宽带封禁80端口- 18443:80     #冒号左边是宿主机开放端口,冒号右边是容器开放端口tomcat:   #服务名image: tomcat  #镜像名称container_name: tomcat  #自定义容器名ports:          #开放端口映射3306-->3306- 18080:8080     #冒号左边是宿主机开放端口,冒号右边是容器开放端口# tomcat 启动时,执行的命令,默认不显示首页,需要执行命令显示首页entrypoint: |bash -c 'cp -a webapps.dist/* webapps; exec catalina.sh run'
# 定义网络配置
networks:default:name: testnetenable_ipv6: true

测试结果:

root@localhost:/storage/build/test# docker compose up -d
[+] Running 3/3✔ Network testnet   Created           0.3s ✔ Container tomcat  Started           0.5s ✔ Container apache  Started           0.5s 
root@localhost:/storage/build/test# docker exec -it apache sh
/usr/local/apache2 # ping6 -c 1 taobao.com
PING taobao.com (2401:b180:7003::6b): 56 data bytes
64 bytes from 2401:b180:7003::6b: seq=0 ttl=88 time=38.508 ms--- taobao.com ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 38.508/38.508/38.508 ms
/usr/local/apache2 # ping6 -c 1 tomcat
PING tomcat (fdf7:f9e1:685c::3): 56 data bytes
64 bytes from fdf7:f9e1:685c::3: seq=0 ttl=64 time=0.069 ms--- tomcat ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.069/0.069/0.069 ms
/usr/local/apache2 # 

证明是通的了。

两个容器互相不通

两个容器,一个使用默认网络,一个使用自定义网络

services: #服务apache:   #服务名image: httpd:alpine  #镜像名称container_name: apache  #自定义容器名ports:          #开放端口映射,家庭宽带封禁80端口- 18443:80     #冒号左边是宿主机开放端口,冒号右边是容器开放端口tomcat:   #服务名image: tomcat  #镜像名称container_name: tomcat  #自定义容器名ports:          #开放端口映射3306-->3306- 18080:8080     #冒号左边是宿主机开放端口,冒号右边是容器开放端口# tomcat 启动时,执行的命令,默认不显示首页,需要执行命令显示首页entrypoint: |bash -c 'cp -a webapps.dist/* webapps; exec catalina.sh run'networks:       #网络- frontnet         #属于网络frontnet
# 定义网络配置
networks:default:name: testnetenable_ipv6: true#设置网络时,使用frontnet网络frontnet:#定义网络名name: front_net#启用ipv6enable_ipv6: true

测试结果:

root@localhost:/storage/build/test# docker exec -it apache sh
/usr/local/apache2 # ping6 -c 1 taobao.com
PING taobao.com (2401:b180:7003::ed): 56 data bytes
64 bytes from 2401:b180:7003::ed: seq=0 ttl=90 time=37.850 ms--- taobao.com ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 37.850/37.850/37.850 ms
/usr/local/apache2 # ping6 -c 1 tomcat
ping6: bad address 'tomcat'
/usr/local/apache2 # 

证明不通了。

验证

# docker network ls
NETWORK ID     NAME        DRIVER    SCOPE
1896facfbb40   bridge      bridge    local
3db074c68f14   front_net   bridge    local
8292fc7cde4d   host        host      local
9ec95caed86f   none        null      local
f647fa6c47ac   testnet     bridge    local

可以看到网络已经有了两个定义的网络。

总结

更新之后,简化了一些预配置网络的工作,根据AI生成的示例,还可以自定义v6子网。

跨yaml文件,则可以使用自定义网络。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/875902.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

越界智能监测摄像机

越界智能监测摄像机将不断演进。未来,我们可以预见更多创新功能的加入,比如更强大的数据处理能力、更高效的图像识别算法以及与其他安防系统(如报警系统、无人巡逻车)的深度整合。这不仅能提升整体安保水平,还能实现信息共享,提高反应速度。加强公众对这一新兴技术的认知…

攀高行为识别摄像机

攀高行为检测识别摄像机具有显著优势。首先,其高度自动化特性大幅降低了人工监控成本,提高了工作效率;其次,通过数据记录和分析,可以为后续的安全评估和改进提供有力支持。随着科技的发展,未来的攀高行为检测识别摄像机将变得更加智能化。例如,更强大的图像处理能力、更…

火情监测摄像机

火情监测摄像机广泛应用于工业园区、高层建筑、森林防火等领域。在工业园区,由于设备密集且易燃物品众多,安装监测摄像机可以实现24小时不间断监控。一旦发现异常情况,系统会迅速通知相关人员进行处理。在高层建筑中,这种设备能够帮助消防队员快速定位起火点,为灭火行动争…

第一届启航杯网络安全大赛部分wp

第一届启航杯 WEB Easy include <?php error_reporting(0); //flag in flag.php $file=$_GET[fil e]; if(isset($file)) {if(!preg_match("/flag/i",$file)){include($file);}else{echo("no no no ~ ");} } else {highlight_file(__FILE__); }?> …

车辆冲洗监测摄像机

车辆冲洗监测摄像机是一种结合了监控摄像技术和智能分析技术的先进设备,旨在通过实时监测和分析车辆冲洗过程中的情况,识别是否存在异常或问题,并及时发出警报通知相关人员。这种摄像机在汽车服务行业、物流运输领域、环境保护等方面有着广泛的应用前景。车辆冲洗监测摄像机…

春节福利来啦!Mac用户快来抽大奖

亲爱的Mac俱乐部(MaClub)用户及所有果粉朋友们: 值此新春佳节之际,Mac俱乐部特别推出春节亲爱的Mac俱乐部(MaClub)用户及所有果粉朋友们: 值此新春佳节之际,Mac俱乐部特别推出春节抽奖活动,以回馈广大用户长期以来的支持与厚爱。我们精心准备了丰富的奖品,希望能为您…

mysql8.0无备份通过idb文件恢复数据过程、idb文件修复和tablespace id不一致处理

周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.....,当时就冒汗了,心想这个妹子怎么被... 问其原由,原来是他们公司服务器掉电,重启后单位的站点打不开了,请求支援... 妹妹说搞定请我吃临沂炒鸡,作为从业N年的…

Python高性能编程:五种核心优化技术的原理与Python代码

在性能要求较高的应用场景中,Python常因其执行速度不及C、C++或Rust等编译型语言而受到质疑。然而通过合理运用Python标准库提供的优化特性,我们可以显著提升Python代码的执行效率。本文将详细介绍几种实用的性能优化技术。 https://avoid.overfit.cn/post/d5e73b6322714603…

个人星盘 api数据接口

星盘,星盘分析,星盘查询,在线星盘,个人星盘,星座配对,占星,缘份居国学,API数据接口星座星盘,星座星盘‌是一种根据出生日期、时间和地点等信息,通过占星学原理进行星象排布和解读的方法。它通过对天体运行规律、星体属性和宫位的分析,来预测个人的性格特点、运势走向以及与他…

新春“码”启 | 0 基础开发微信小游戏,Cocos 游戏引擎 + AI 辅助编程(第2天)

本文是“新春“码”启 | 从零开始开发微信小游戏”第2天的学习历程,包括如何设计一个适合小朋友玩的游戏创意和使用Cocos Creator进行初步开发的过程。虽然在游戏创意上遇到了一些挑战,但通过不断尝试和学习Cocos的基础操作,逐渐找到了方向。同时,我们还探讨了TypeScript的…

Magnet Axiom 8.5 新增功能概览 (数字取证与分析软件)

Magnet Axiom 8.5 新增功能概览 (数字取证与分析软件)Magnet Axiom 8.5 新增功能概览 (数字取证与分析软件) Magnet Axiom 8.5 Windows x64 Multilingual - 数字取证与分析 Digital Forensic Software 请访问原文链接:https://sysin.org/blog/magnet-axiom/ 查看最新版。原创作…