解决 Docker CE 在无根模式(rootless)下无法通过 IPv6 拉取映像的问题
折腾一天快把我逼疯了
本来 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 服务之后需要重新添加路由表。
解决 Docker CE 在无根模式(rootless)下无法通过 IPv6 拉取映像的问题的更多相关文章
- 写了个python脚本,循环执行某一个目录下的jmeter脚本————解决的问题,每次回归时,都得一个个拉取
import os import time #需要你改的就这3个参数 #path是放你jmx脚本的文件夹路径 path="D:\\桌面\\每次都是从共享上考最新的\\" #jtl_ ...
- Windows 10 PC 安装 Docker CE
系统要求 Docker CE 支持 64 位版本的 Windows 10 Pro,且必须开启 Hyper-V. 如果系统是win 10 家庭版安装 docker 很恶心, 我也是废了2天才安装, 由 ...
- Docker使用阿里云拉取配置源也无法拉取的镜像-github镜像镜像gcr.io
我搞了一天都没搞好,最后用了这个办法解决了拉取镜像的问题 对于大部分镜像来说,我们配置源就可以,但是对于较新的镜像,没得搞啊,铁子们,真的崩溃... 最终发现可以通过Aliyun的自动构建来处理被墙镜 ...
- (原创)nginx反向代理上网,使docker可以拉取镜像
转载请注明出处:饭饭博客:https://www.cnblogs.com/zzf0305/p/9602107.html 摘语:参考了N多大侠的资料,终于将自己的环境配置起来了.站在众多巨人的肩膀进行总 ...
- Docker版本与centos和ubuntu环境下docker安装介绍
# Docker版本与安装介绍 * Docker-CE 和 Docker-EE * Centos 上安装 Docker-CE * Ubuntu 上安装 Docker-CE ## Docker-CE和D ...
- 解决docker容器无网络、无法连接互联网----长期更新
众所周知,docker有三种默认的网络模式,分别是: bridge host none 然后需要注意的就是内核转发这个,一定不要忘了!配置方法如下 echo -e "net.ipv4.ip_ ...
- 解决docker镜像无vim
docker拉取的镜像一般都是ubantu系统 安装vim apt-get update apt-get vim
- centos7 部署 docker ce
=============================================== 2019/4/9_第1次修改 ccb_warlock === ...
- CentOS 7 安装Docker CE
本节内容: 背景 Moby项目 安装Docker CE 卸载Docker CE 一.背景 在搭建Registry的过程中,发现使用Docker 1.12版本,在push镜像到Registry时会报错误 ...
- Docker入门之 - 如何安装Docker CE
原文:Docker入门之 - 如何安装Docker CE 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012055638/article/det ...
随机推荐
- 向web服务器下载文件
web服务器向客户端发送文件 Web服务器读取一个文件的二进制数据,把这组二进制数据发送个客户端,服务器发送给客户端的HTML文档的本质也是二进制.客户端使用以下代码读文件 response = ur ...
- gitlab角色与权限
用户在项目中的角色 Guest:访客.可以创建issue.发表评论,不能读写版本库.(就是看不了代码-) Reporter:Git项目测试人员.可以克隆代码,不能提交.QA.PM可以赋予这个权限. D ...
- HTTP协议 学习:2-基于libcurl的开发
HTTP协议 学习:2-基于libcurl的开发 背景 上一讲我们介绍了HTTP报文的一些内容,这一讲我们基于http有关的开源库,进行HTTP通信.最后再完成一个简单的下载小程序. ref : ht ...
- 化合物同位素理论同位素分布计算软件Isopro 3.0
大家好,今天分享一款软件,即可以计算化合物理论同位素分布的软件Isopro 3.0.在做质谱的实验时,特别对合成的化合物进行质量表征时,往往要求ppm绝对值在5以内,对质谱的分辨率要求很高.对于小分子 ...
- 一文为你深度解析LLaMA2模型架构
本文分享自华为云社区<[云驻共创]昇思MindSpore技术公开课 大咖深度解析LLaMA2 模型架构>,作者: Freedom123. 一.前言 随着人工智能技术的不断发展,自然语言处理 ...
- Spring注解之依赖注入@Autowired和@Resource
Spring常见的DI方式 字段注入(Field Injection) 在字段上使用@Autowired/Resource注解 字段注入是日常开发中使用最多的一种注入方式,它的实现代码如下: @Aut ...
- WebUi爬虫自动化测试 Selenium4.X+Java教程
为什么要学习Selenium 自动化测试 Selenium是最受欢迎的Web应用程序自动化测试工具之一. 通过学习Selenium,可以编写自动化测试脚本,用于自动执行各种任务,例如验证功能.测试用户 ...
- 搜索Python编程获取相关图书信息
1.获取相关图书信息 #搜索"Python编程"获取相关图书信息 from selenium import webdriver from selenium.webdriver.su ...
- EasyBPM进销存之物料管理
本文是EasyBPM平台实现进销存系列中的一篇,主要讲述物料的相关的管理. 在ERP系统中,"物料"一词有着广泛的含义,它是所有产品.半成品.在制品.原材料.配套件.协作件.易耗品 ...
- [oeasy]python0083_十进制数如何存入计算机_八卦纪事_BCD编码_Binary_Coded_Decimal
编码进化 回忆上次内容 上次 研究了 视频终端的 演化 从VT05 到 VT100 从 黑底绿字 到 RGB 24位真彩色 形成了 VT100选项 从而 将颜色 数字化 了 生活中我们更常用 10个数 ...