docker容器启用ipv6地址方法,用ipv6地址访问容器方法流程、创建一个nginx容器用ipv6地址访问测试流程

文章目录

  • docker容器启用ipv6地址方法
    • Docker-Compose启用IPv6
    • 启用ipv6
    • 重启docker生效
    • 创建一个ipv6的docker网络
    • 创建容器测试v6地址
      • 使用ipv6的网络创建容器
      • 使用普通网络创建容器测试
    • 创建一个nginx容器用ipv6地址访问测试
      • 容器创建
      • ipv4地址验证
      • ipv6地址访问验证
      • 修改nginx容器网页内容

docker容器启用ipv6地址方法

Docker-Compose启用IPv6

  • 你如果没用使用Docker-Compose,就忽略配置,以了解为主,直接去看下面的docker配置。
    • docker-compose.yaml 文件必须使用 version: “2.*”version: “3.*” 不支持 enable_ipv6 配置
    • 如果已有旧的容器在运行(网络配置发生了变化),则需要先销毁容器 docker-compose down 然后再重新创建 docker-compose up
    • 仅需在network下添加如下内容即可,其他信息正常配置。
networks:
      local_bridge:
        enable_ipv6: true
        driver: bridge
        ipam:
          config:
            - subnet: "2409:807e::/80"

启用ipv6

  • 说明
    docker默认是不支持ipv6的,所以想要使用ipv6,就得单独开启这个功能。
  • 前提条件
    主机需要具备ipv6地址并能正常使用,如下,2409开头的正规v6地址,而非fe80这种内部用的v6地址哈。
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether fa:16:3e:67:77:58 brd ff:ff:ff:ff:ff:ff
    inet 10.241.102.245/24 brd 10.241.102.255 scope global dynamic noprefixroute ens3
       valid_lft 63404sec preferred_lft 63404sec
    inet6 2409:807e:58cc:114::a2d/120 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe67:7758/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
  • 执行vim /etc/docker/daemon.json 配置文件【没有这个配置文件是正常的】,写入如下内容
    "fixed-cidr-v6": "2409::/80",这个后面的ip是自定义的。。。
[root@xz-docker-tes-01 ~]# cat /etc/docker/daemon.json 
{
    "ipv6": true,
    "fixed-cidr-v6": "2409::/80",
    "experimental": true,
    "ip6tables": true
}
[root@xz-docker-tes-01 ~]# 

重启docker生效

  • 重启不报错,实际上此时docker就能支持ipv6了。
[root@xz-docker-tes-01 ~]# systemctl restart docker
[root@xz-docker-tes-01 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2023-12-01 11:40:31 CST; 9s ago
     Docs: https://docs.docker.com
 Main PID: 14470 (dockerd)
    Tasks: 13
   Memory: 47.3M
   CGroup: /system.slice/docker.service
           └─14470 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

创建一个ipv6的docker网络

  • 这一步其实是不需要做的,因为,不使用这个网络的docker容器,也可以正常使用ipv6地址。
    我这多做一步是为了做测试而已。具体区别见下面测试说明。【测试后,我觉得这个没意义】
[root@xz-docker-tes-01 ~]# docker network create -d bridge --ipv6 --subnet "2409:807e::/80" ipv6_bridge
09663034b21493f64d2484dc21923a789bc8ac51c403d422e397435df74f204b
[root@xz-docker-tes-01 ~]#
  • 创建好后的网络信息如下
[root@xz-docker-tes-01 ~]# docker network  list
NETWORK ID     NAME          DRIVER    SCOPE
bf1937081949   bridge        bridge    local
e98be3082c27   host          host      local
09663034b214   ipv6_bridge   bridge    local
7cee98cd58fe   none          null      local
[root@xz-docker-tes-01 ~]# 

创建容器测试v6地址

使用ipv6的网络创建容器

  • 我这使用上面创建的一个ipv6的网络做测试测试
[root@xz-docker-tes-01 ~]# docker run -dit --name=v6 --restart=always --network=ipv6_bridge hub.c.163.com/library/centos:latest 
49af16d7dd9c63afd2a43b24b6dfdb8b39d70ef8e39c1d1c067dcbe28c242efa
[root@xz-docker-tes-01 ~]# 
[root@xz-docker-tes-01 ~]# docker ps
CONTAINER ID   IMAGE                                 COMMAND       CREATED         STATUS         PORTS     NAMES
49af16d7dd9c   hub.c.163.com/library/centos:latest   "/bin/bash"   3 seconds ago   Up 2 seconds             v6
[root@xz-docker-tes-01 ~]# 
  • 容器内 ping其他v6地址和网关都能通,一切正常
[root@xz-docker-tes-01 ~]# docker exec -it v6 bash
[root@49af16d7dd9c /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@49af16d7dd9c /]#
[root@49af16d7dd9c /]# ping6 2409:807e:58cc:114::a2d
PING 2409:807e:58cc:114::a2d(2409:807e:58cc:114::a2d) 56 data bytes
64 bytes from 2409:807e:58cc:114::a2d: icmp_seq=1 ttl=64 time=0.459 ms
64 bytes from 2409:807e:58cc:114::a2d: icmp_seq=2 ttl=64 time=0.093 ms
64 bytes from 2409:807e:58cc:114::a2d: icmp_seq=3 ttl=64 time=0.090 ms
^C
--- 2409:807e:58cc:114::a2d ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2058ms
rtt min/avg/max/mdev = 0.090/0.214/0.459/0.173 ms
[root@49af16d7dd9c /]# ping6 2409:807e:58cc:114::a01
PING 2409:807e:58cc:114::a01(2409:807e:58cc:114::a01) 56 data bytes
64 bytes from 2409:807e:58cc:114::a01: icmp_seq=1 ttl=63 time=10.2 ms
64 bytes from 2409:807e:58cc:114::a01: icmp_seq=2 ttl=63 time=2.04 ms
64 bytes from 2409:807e:58cc:114::a01: icmp_seq=3 ttl=63 time=2.23 ms
64 bytes from 2409:807e:58cc:114::a01: icmp_seq=4 ttl=63 time=2.35 ms
^C
--- 2409:807e:58cc:114::a01 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.048/4.208/10.200/3.461 ms
[root@49af16d7dd9c /]# 
[root@49af16d7dd9c /]# exit
exit
[root@xz-docker-tes-01 ~]# 
  • 该容器的网络容器里面呢,也会有一个ipv6地址,主机虽然能ping通,但这个ip是容器专属的,
[root@xz-docker-tes-01 ~]# docker inspect v6 | grep "IPv6"
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPv6Addresses": null,
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPv6Gateway": "",
                    "IPv6Gateway": "2409:807e::1",
                    "GlobalIPv6Address": "2409:807e::2",
                    "GlobalIPv6PrefixLen": 80,
[root@xz-docker-tes-01 ~]# 
[root@xz-docker-tes-01 ~]# ping 2409:807e::2
PING 2409:807e::2(2409:807e::2) 56 data bytes
64 bytes from 2409:807e::2: icmp_seq=1 ttl=64 time=0.695 ms
64 bytes from 2409:807e::2: icmp_seq=2 ttl=64 time=0.090 ms
^C
--- 2409:807e::2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 50ms
rtt min/avg/max/mdev = 0.090/0.392/0.695/0.303 ms
[root@xz-docker-tes-01 ~]# 
  • 容器内能ping通同样用这个网络创建的其他容器【但默认容器直接网络是隔离的哈】,具体这个v6地址的用途自行探索吧。
[root@xz-docker-tes-01 ~]# docker exec -it v6 bash
[root@49af16d7dd9c /]# ping6 2409:807e::3
PING 2409:807e::3(2409:807e::3) 56 data bytes
64 bytes from 2409:807e::3: icmp_seq=1 ttl=64 time=0.346 ms
64 bytes from 2409:807e::3: icmp_seq=2 ttl=64 time=0.108 ms
64 bytes from 2409:807e::3: icmp_seq=3 ttl=64 time=0.107 ms
^C
--- 2409:807e::3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2085ms
rtt min/avg/max/mdev = 0.107/0.187/0.346/0.112 ms
[root@49af16d7dd9c /]# 

使用普通网络创建容器测试

进入以后,能ping通网关和其他v6地址,没问题。

[root@xz-docker-tes-01 ~]# docker run --name=test1 -it hub.c.163.com/library/centos
[root@d866a511db84 /]# ping6 2409:807e:58cc:114::a17
PING 2409:807e:58cc:114::a17(2409:807e:58cc:114::a17) 56 data bytes
64 bytes from 2409:807e:58cc:114::a17: icmp_seq=1 ttl=63 time=1.85 ms
64 bytes from 2409:807e:58cc:114::a17: icmp_seq=2 ttl=63 time=0.782 ms
64 bytes from 2409:807e:58cc:114::a17: icmp_seq=3 ttl=63 time=0.793 ms
64 bytes from 2409:807e:58cc:114::a17: icmp_seq=4 ttl=63 time=0.891 ms
^C
--- 2409:807e:58cc:114::a17 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3053ms
rtt min/avg/max/mdev = 0.782/1.080/1.855/0.449 ms
[root@d866a511db84 /]# 
[root@d866a511db84 /]# ping6 2409:807e:58cc:114::a01
PING 2409:807e:58cc:114::a01(2409:807e:58cc:114::a01) 56 data bytes
64 bytes from 2409:807e:58cc:114::a01: icmp_seq=1 ttl=63 time=13.3 ms
64 bytes from 2409:807e:58cc:114::a01: icmp_seq=2 ttl=63 time=1.85 ms
^C
--- 2409:807e:58cc:114::a01 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.716/5.648/13.378/5.466 ms
[root@d866a511db84 /]# 
  • 默认生成的,没有这个v6地址的,但不影响使用ipv6.
[root@xz-docker-tes-01 ~]# docker inspect test1 | grep "IP"
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "GlobalIPv6Address": "2409::242:ac11:2",
            "GlobalIPv6PrefixLen": 80,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "2409::1",
                    "IPAMConfig": null,
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "2409::1",
                    "GlobalIPv6Address": "2409::242:ac11:2",
                    "GlobalIPv6PrefixLen": 80,
[root@xz-docker-tes-01 ~]# 

创建一个nginx容器用ipv6地址访问测试

容器创建

  • 先创建一个映射端口的nginx容器
[root@xz-docker-tes-01 ~]# docker run -dit --name=nginx --restart=always -p 80:80 --network=ipv6_bridge nginx
4a175fb0754961537b23111bab1251e9c9f36645e9936f07c5daeea28af4d898
[root@xz-docker-tes-01 ~]# netstat -ntlp | grep 80 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      16074/docker-proxy  
tcp6       0      0 :::80                   :::*                    LISTEN      16088/docker-proxy  
[root@xz-docker-tes-01 ~]#
  • 我是指定了创建的ipv6网络的【其实不指定也一样,不影响外部访问的】
[root@xz-docker-tes-01 ~]# docker inspect nginx | grep "IPv6"
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPv6Addresses": null,
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPv6Gateway": "",
                    "IPv6Gateway": "2409:807e::1",
                    "GlobalIPv6Address": "2409:807e::3",
                    "GlobalIPv6PrefixLen": 80,
[root@xz-docker-tes-01 ~]#

ipv4地址验证

直接浏览器输入ipv4的地址,不报错就行【我下面显示ccx是因为我修改过nginx的默认文件内容了】
在这里插入图片描述

ipv6地址访问验证

  • 验证ipv6地址之前,需要保证你测试的主机上已经配置有ipv6地址并且能正常使用
    首先测试能否ping通目标ipv6地址【就上面搭建ipv6的主机v6地址,是主机,而非容器的啊】
    在这里插入图片描述
  • 然后网页直接输入v6地址【就上面搭建ipv6的主机v6地址,是主机,而非容器的啊】
    • 访问格式[ipv6addr] 【注意,v6地址用中括号扩起来的】
    • 其实下面内容就是nginx默认的内容,因为没有放任何东西,所以就会显示nginx界面,反正没报错就是正常的。
      在这里插入图片描述

修改nginx容器网页内容

  • xian进入nginx容器内部
[root@xz-docker-tes-01 ~]# docker exec -it nginx bash
root@4a175fb07549:/#
  • 因为不知道容器的http默认文件在哪里,所以可以用find搜索
root@4a175fb07549:/# find / -name html
find: '/proc/32/map_files': Permission denied
find: '/proc/33/map_files': Permission denied
find: '/proc/34/map_files': Permission denied
find: '/proc/35/map_files': Permission denied
/usr/share/nginx/html
root@4a175fb07549:/#
  • 通过搜索已知html路径为:/usr/share/nginx/html
    那么就可以去修改了噻【懂了吧,想要显示啥内容,替换这个index.html文件就行了】
root@4a175fb07549:/usr/share/nginx/html# ls
50x.html  index.html
root@4a175fb07549:/usr/share/nginx/html# vi index.html 
bash: vi: command not found
root@4a175fb07549:/usr/share/nginx/html# vim index.html 
bash: vim: command not found
root@4a175fb07549:/usr/share/nginx/html# cat index.html 
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
root@4a175fb07549:/usr/share/nginx/html# cp index.html index.html.bak
root@4a175fb07549:/usr/share/nginx/html# echo ccx > index.html
root@4a175fb07549:/usr/share/nginx/html#     
  • 如我上面,将ccx内容写入了index.html文件,那么正常情况,网页就只会显示ccx这3个字母
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java面向对象(高级)-- 类的成员之五:内部类(InnerClass)

文章目录 一、 概述&#xff08;1&#xff09; 介绍1. 什么是内部类2. 为什么要声明内部类3. 内部类使用举例4. 内部类的分类 &#xff08;2&#xff09;举例&#xff08;3&#xff09;重点知识1. 对成员内部类的理解2. 创建成员内部类的实例2.1 静态成员内部类2.2 非静态成员内…

大数据读本:暴雨以数字技术助力传统产业数字化转型

发展数字经济&#xff0c;产业数字化是重要引擎。暴雨作为数字经济的领军企业&#xff0c;近年来积极利用数字技术对传统产业进行全方位、全角度、全链条的改造&#xff0c;提高要素生产率&#xff0c;释放数字对经济发展的放大、叠加、倍增作用。在农业产业化方面&#xff0c;…

【开源】基于Vue和SpringBoot的校园二手交易系统

项目编号&#xff1a; S 009 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S009&#xff0c;文末获取源码。} 项目编号&#xff1a;S009&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 二手商品档案管理模…

K7系列FPGA多重启动(Multiboot)

Xilinx 家的 FPGA 支持多重启动功能&#xff08;Multiboot&#xff09;&#xff0c;即可以从多个 bin 文件中进行选择性加载&#xff0c;从而实现对系统的动态更新&#xff0c;或系统功能的动态调整。 这一过程可以通过嵌入在 bit 文件里的 IPROG 命令实现上电后的自动加载。而…

房产中介管理信息系统的设计与实现

摘 要 随着房地产业的开发&#xff0c;房产中介行业也随之发展起来&#xff0c;由于房改政策的出台&#xff0c;购房、售房、租房的居民越来越多&#xff0c;这对房产中介部门无疑是一个发展的契机。本文结合目前中国城市房产管理的实际情况和现阶段房屋产业的供求关系对房产中…

用Java写一个王者荣耀游戏

目录 sxt包 Background Bullet Champion ChampionDaji GameFrame GameObject Minion MinionBlue MinionRed Turret TurretBlue TurretRed beast包 Bear Beast Bird BlueBuff RedBuff Wolf Xiyi 打开Eclipse创建图片中的几个包 sxt包 Background package sxt;…

Rust语言项目实战(三) - 创建主循环

回顾 在前面的章节中&#xff0c;我们大致已经完成了如下的工作&#xff1a; 为游戏添加了音频文件为游戏准备了备用屏幕及设置为游戏准备了键盘的即时捕获输入的设置在退出游戏前恢复上述的设置 众所周知&#xff0c;游戏在不手动退出的情况下应该一直运行下去&#xff0c;…

编程好处、系统介绍、app演示

编程视频教学地址&#xff1a; 1、编程好处 1.1、自主开发 类似微信、qq等软件应用&#xff0c;解决人们日常生活问题 例如&#xff1a; 1&#xff09;你可以&#xff0c;自己开发一个网站&#xff0c;管理自己的日常生活照片&#xff0c;防止哪一天手机掉了或丢了&#xff0…

UVA11729 Commando War

UVA11729 Commando War 题面翻译 突击战 你有n个部下&#xff0c;每个部下需要完成一项任务。第i个部下需要你花Bj分钟交代任务&#xff0c;然后他就会立刻独立地、无间断地执行Ji分钟后完成任务。你需要选择交代任务的顺序&#xff0c;使得所有任务尽早执行完毕&#xff08…

高斯混合模型:GMM和期望最大化算法的理论和代码实现

高斯混合模型(gmm)是将数据表示为高斯(正态)分布的混合的统计模型。这些模型可用于识别数据集中的组&#xff0c;并捕获数据分布的复杂、多模态结构。 gmm可用于各种机器学习应用&#xff0c;包括聚类、密度估计和模式识别。 在本文中&#xff0c;将首先探讨混合模型&#xf…

【Java Web学习笔记】 1 - HTML入门

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/html 零、网页的组成 HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息&#xff0c;可以包含文字、图片视频等。 CSS样式是表现。就像网页的外衣。比如&#xff0c;标题字体、…

electerm下载和安装

electerm下载和安装 一、概述 electerm 是一款免费开源、基于electron/ssh2/node-pty/xterm/antd/ subx等libs的终端/ssh/sftp客户端(linux, mac, win)。 而且个人觉得electerm界面更好看一些&#xff0c;操作都是类似的。 二、下载安装 下载地址&#xff1a;https://elec…

正则表达式从放弃到入门(1):“正则表达式”是什么?

正则表达式从放弃到入门&#xff08;1&#xff09;&#xff1a;“正则表达式”是什么&#xff1f; 本博文转载自 这是一篇”正则表达式”扫盲贴&#xff0c;如果你还不理解什么是正则表达式&#xff0c;看这篇文章就对了。 如果你已经掌握了”正则表达式”&#xff0c;就不用再…

pip包管理工具

pip 是 Python 包管理工具&#xff0c;该工具提供了对Python包的查找、下载、安装、卸载的功能。 Python 2.7.9 或 Python 3.4 以上版本的python都自带 pip 工具 1. 配置pip国内镜像 pip安装的包都存在于外国的服务器上&#xff0c;速度会非常慢&#xff0c;可以给pip配置国内…

全栈冲刺 之 一天速成MySQL

一、为什么使用数据库 数据储存在哪里&#xff1f; 硬盘、网盘、U盘、光盘、内存&#xff08;临时存储&#xff09; 数据持久化 使用文件来进行存储&#xff0c;数据库也是一种文件&#xff0c;像excel &#xff0c;xml 这些都可以进行数据的存储&#xff0c;但大量数据操作…

arcgis投影栅格不可用

1、使用【投影栅格】工具进行栅格数据投影转换时报错。 解决方法&#xff1a;如果使用的是arcgis10.5及以下的版本&#xff0c;则需要更换更高的版本&#xff0c;因为这个是软件问题&#xff0c;需要更换到arcgis10.6及以上版本&#xff0c;更高级别的版本已经修复了这个问题。…

【题目】链表相关算法题

文章目录 一. 合并两个有序链表题目解析算法原理代码编写 二. 相交链表问题题目解析算法原理代码编写 三. 环形链表问题1. 判断是否有环2. 计算环的长度3. 找到环的入口点 四. 反转链表方法一&#xff1a;边迭代、边逆置方法二&#xff1a;头插 五. 判断链表是否回文题目解析算…

LinkedList详解

LinkedList详解 LinkedList是List接口的一个主要的实现类之一&#xff0c;基于链表的实现。以java8为例来了解一下LinkedList的源码实现 继承关系 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>,…

进制转化总结

来源&#xff0c;做个笔记&#xff0c;讲的还蛮清楚通信原理-2.5 数据封装与传输05_哔哩哔哩_bilibili ip地址范围

6 新建工程——寄存器

文章目录 6.1 本地新建工程文件夹6.2 新建工程6.2.1 选择CPU型号6.2.2 在线添加库文件6.2.3 添加文件6.2.4 复制存储器分配文件6.2.5 配置选项卡6.2.5.1 Linker6.2.5.2 Target6.2.5.3 Output 选项卡6.2.5.4 Listing 选项卡6.2.6 下载器配置 版本说明&#xff1a;MDK5.24 6.1 本…