首页 > 其他分享 >解决 Docker CE 在无根模式(rootless)下无法通过 IPv6 拉取映像的问题

解决 Docker CE 在无根模式(rootless)下无法通过 IPv6 拉取映像的问题

时间:2024-08-15 15:50:46浏览次数:15  
标签:tap0 rootless CE fe80 IPv6 docker Docker

折腾一天快把我逼疯了
本来 Docker 对 IPv6 的支持就不好,再来个 rootless,雪上加霜

首先,我们要区分 Docker Engine 和 里面的 Image。
拉取映像是 Docker Engine 在工作,也就是那个 Daemon 本身,而不是某个 container 或 image。

Rootless Docker 使用 RootlessKit 来管理用户命名空间、网络命名空间等,而 RootlessKit 内部使用 slirp4netns 来虚拟化网络栈。

开启虚拟网络的 IPv6 支持

准备工作

将 docker-ce 和一系列 rootless 工具全部升级到最新版:

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

特别地,将 slirp4netns 升级到 1.2 以上。

如果用 Ubuntu 22.04 或更早版本的,可以去下载 Debian Bookworm 的 deb 包安装。

修改服务参数

编辑 systemd 服务配置
将以下内容写入 ~/.config/systemd/user/docker.service.d/override.conf

[Service]
Environment=DOCKERD_ROOTLESS_ROOTLESSKIT_FLAGS=--ipv6

重载 systemd 并重启 docker 服务

systemctl --user daemon-reload
systemctl --user restart docker

添加 IPv6 路由

到这里如果尝试拉取映像,应该还是不走 IPv6。如果走了,忽略本步。

进入虚拟网络空间

dockerd-rootless-setuptool.sh nsenter

查看当前路由
输入 route -6,路由表可能长下面这样

# route -6
Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
fd40:200::/64                  [::]                       U    256 2     0 br-3fba6095d8f6
fd80:100:1::/64                [::]                       U    256 1     0 docker0
fd80:100:1::/64                [::]                       U    1024 1     0 docker0
fe80::/64                      [::]                       U    256 2     0 tap0
ip6-localhost/128              [::]                       Un   0   2     0 lo
fe80::/128                     [::]                       Un   0   3     0 tap0
fe80::7c5b:bbff:fed4:1747/128  [::]                       Un   0   5     0 tap0
ip6-mcastprefix/8              [::]                       U    256 5     0 tap0
ip6-mcastprefix/8              [::]                       U    256 1     0 docker0
[::]/0                         [::]                       !n   -1  1     0 lo

路由表的问题就是没有一个往 tap0 的 [::]/0 路由,所以我们要添加出来。

在此之前,我们要先找默认网关

# ip -6 neigh show dev tap0
fe80::2 lladdr 52:56:00:00:00:02 router STALE

这里我的默认网关就是 fe80::2,接下来我们添加路由

ip -6 route add default via fe80::2 dev tap0 metric 100

via 后面就写刚才找到的默认网关。
metric 是跃点数,越小越优先,我这里设成路由表里的最小值。


注意事项
重启 docker 服务之后需要重新添加路由表。

标签:tap0,rootless,CE,fe80,IPv6,docker,Docker
From: https://www.cnblogs.com/BrandonPei/p/18361111

相关文章

  • openGauss6.0单点企业版部署_Centos7_x86
    本文档环境:CentOS7.9x86_644G1C40Gpython2.7.5交互式初始化环境方式openGauss介绍openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。openGauss社区版本分为长期支......
  • 使用Docker将Java项目打包并部署到CentOS服务器的详细教程。
    当然,让我们将上述步骤进一步细化,以便更好地理解整个过程。前提条件一个Java项目CentOS服务器,并且已安装DockerJava项目可以正常在本地运行具有服务器访问权限————————————————————————————————————————————步骤1:准备Jav......
  • 利用certutil绕过上传限制
    certutil实战小技巧(绕过部分上传限制)上传时遇到限制上传大小时:编码base64:certutil-encodeyb.exe1.txt可以把1.txt拆成三个txt,分块上传后,再使用copyc:\*txtc:\123.txt//把c盘根目录下的所有txt合并为123.txtcertutil-decode123.txt123.exe收集了一些windows......
  • Linux系统性能监控工具Glances使用
    一Glances简介1.1glances介绍Glances是一个跨平台的监控工具,旨在通过curses或基于Web的界面呈现大量监控信息。该信息根据用户界面的大小动态调整。它也可以在客户端/服务器模式下工作。远程监控可以通过终端、Web界面或API(XML-RPC和RESTful)完成。统计数据也可以导出......
  • rkhunter:在centos9上安装
    一,官方地址http://rkhunter.sourceforge.net/ 二,通过yum安装[root@blogchkrootkit]#yuminstallrkhunter 三,使用rkhunter1,查看版本:[root@blogchkrootkit]#rkhunter--versionRootkitHunter1.4.62,查看帮助:[root@blogchkrootkit]#rkhunter--help3,更新......
  • 【NeRF】对小白友好的Neural_Radiance_Fields讲解
    @目录1.Definitionoffield(场的定义)1.1shaperepresentations(各种形状表征方式)1.2Explicitsurfacesandimplicitsurfaces1.3RadianceField(ImplicitSurfaces)体素密度2.DefinitionofRendering(渲染的定义)2.1SphereTracing(球追踪技术)2.2Volumnrender(体渲染)3.3Dconte......
  • cadence allegro 新建一个PCB文件,从外观尺寸到约束,正确的工作流过程
    前言工欲善其事必先利其器,先头脑清晰的将原理图中需要约束特殊说明的功能和要求提前仔约束管理器中约束好,避免设计后期阶段出现间距不够、空间不够,无法布线的问题。试想下,你辛苦布线布局一周时间,正准备发出去制造时候,领导告诉你,你的固定孔位置不合理,你这条线距离边框太近......
  • chkrootkit:centos9上安装
    一,官方地址:1,官网:https://www.chkrootkit.org/2,代码地址:ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz二,通过yum安装时会报错:默认提示找不到chkrootkit[root@bloggsapi]#yuminstallchkrootkitLastmetadataexpirationcheck:2:50:44agoonThu15......
  • 使用vercel做一个Google镜像站
    前置准备一个vercel账号一个github账号能够确保你流畅访问以上两个网站的工具一个域名一个cloudflare账号域名参考我的一期文章。如何免费白嫖一个域名?Fork前往github,fork这个仓库:googlevercel打开vercel,导入你刚刚fork的仓库。点击Settings->Domai......
  • 手动实现 Spring 底层机制【初始化 IOC容器+依赖注入+BeanPostProcessor 机制+AOP】【
    手动实现Spring底层机制【初始化IOC容器+依赖注入+BeanPostProcessor机制+AOP】【任务阶段4】任务阶段1、2、3链接一、实现任务阶段1-编写自己Spring容器,实现扫描包,得到bean的class对象二、实现任务阶段2-扫描将bean信息封装到BeanDefinition对象,并......