Docker、Containerd添加代理

devtools/2024/10/17 18:12:41/

Docker、Containerd添加代理

博文的由来

国内网络环境下使用过docker的小伙伴,多数都会碰到一个一问题,由于连不上国外的dockerhub,导致无法pull需要的镜像,解决方案基本就四种

  1. 将镜像仓库地址切换到国内的镜像仓库
  2. 使用别人打好的镜像包,使用 load命令导入到本地镜像仓库
  3. 使用代理来连接国外的docker镜像库
  4. 下载源码,编译成镜像,推送到本地的镜像仓库,然后从本地镜像仓库拉取所需镜像
  • 第一种方式,像redis、mysql、postgreSQL、RabbitMQ等等,这些热门镜像国内的镜像仓库都是有我们需要的镜像版本,然而,当我们使用一些新的镜像版本时,国内镜像仓库多数情况下是没有的。

  • 第二种方式,需要从网络资源、朋友、同事那儿获取到,打包好的镜像,工作中及其不方便,严重影响工作效率。

  • 第三种方式,使用代理来连接国外的镜像仓库,这种方式在工作中会经常使用,因为大多数技术的官方文档中提到的版本,在国外的镜像仓库中都有对应的版本,使用起来快捷省力,节省时间,工作效率高。

  • 第四种方式,自己下载源码,并制作镜像,推送到本地镜像仓库。当时间充裕时,这种方式也是个不错的选择,但是但是门槛相对较高。

下面主要介绍一下如何使用代理来连接国外的镜像仓库

docker_18">docker环境下使用代理

docker环境下,有两种方式可以给docker配置代理服务器

  1. 新增或修改/etc/docker/daemon-reload.json配置文件
mkdir -p /etc/docker
touch /etc/docker/daemon.json
tee /etc/docker/daemon.json << "EOF"
{"proxies": {"http-proxy": "http://IP:PORT","https-proxy": "http://IP:PORT","no-proxy": "localhost"}
}
EOF
systemctl daemon-reload
systemctl restart docker
docker info | grep 'Proxy'

执行上面的命令后,如果出现类似如下信息,表明配置成功

 HTTP Proxy: http://ip:portHTTPS Proxy: http://ip:portNo Proxy: localhost

注意:

  • 需要使用你自己的代理服务器IP和PORT替换掉上面配置中的IP和PORT变量
  • 如果已经存在/etc/docker/daemon-reload.json文件,为了避免覆盖本地docker配置,直接最外层的“{}”中的最后一项配置后添加“,” ,然后按回车键,将下面的代理配置插入即可。
"proxies": {"http-proxy": "http://IP:PORT","https-proxy": "http://IP:PORT","no-proxy": "localhost"}

最后执行如下命令

systemctl daemon-reload
systemctl restart docker
docker info | grep 'Proxy'

如果出现类似如下信息,表明配置成功

HTTP Proxy: http://ip:port
HTTPS Proxy: http://ip:port
No Proxy: localhost
  1. 新增 /etc/systemd/system/docker.service.d/http-proxy.conf配置文件
mkdir -p /etc/systemd/system/docker.service.d
touch /etc/systemd/system/docker.service.d/http-proxy.conf
tee /etc/systemd/system/docker.service.d/http-proxy.conf << EOF
[Service]
Environment="HTTP_PROXY=http://IP:Port"
Environment="HTTPS_PROXY=http://IP:Port"
Environment="NO_PROXY=localhost,127.0.0.1,containerd"
EOF
systemctl daemon-reload
systemctl restart docker
docker info | grep 'Proxy'

如果出现类似如下信息,表明配置成功

 HTTP Proxy: http://ip:portHTTPS Proxy: http://ip:portNo Proxy: localhost

kubernetes使用containerd作为运行时环境时,使用代理

新增 /etc/systemd/system/containerd.service.d/http-proxy.conf配置文件

mkdir -p /etc/systemd/system/containerd.service.d
touch /etc/systemd/system/containerd.service.d/http-proxy.conf
tee /etc/systemd/system/containerd.service.d/http-proxy.conf << EOF
[Service]
Environment="HTTP_PROXY=http://IP:Port"
Environment="HTTPS_PROXY=http://IP:Port"
Environment="NO_PROXY=localhost,127.0.0.1,containerd"
EOF
systemctl daemon-reload
systemctl restart containerd

执行如下命令,检查containerd是否重启成功

systemctl status containerd

显示内容如下所示,表明containerd重启成功

● containerd.service - containerd container runtimeLoaded: loaded (/etc/systemd/system/containerd.service; disabled; vendor preset: disabled)Drop-In: /etc/systemd/system/containerd.service.d└─http-proxy.confActive: active (running) since Tue 2024-06-25 14:04:56 CST; 1h 41min agoDocs: https://containerd.ioMain PID: 24121 (containerd)Tasks: 103Memory: 132.8MCGroup: /system.slice/containerd.service├─ 1751 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id f4aea9371b88b7446f3d6599ea81be12223ef82ff585c5cdce0b9e1e2b516157 -address /run/containerd/containerd.sock├─ 1752 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id ea90b9ac243fdc29b627dcde5a3662d1fa1b3e77d7d17e33684d626118138a50 -address /run/containerd/containerd.sock├─ 1757 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id f85aa0ccc5d628781e82d39b24beae79598127db0ba1f040e20204bad58052ba -address /run/containerd/containerd.sock├─ 1983 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id f97c1b4cdf5dff3750cb74491fa7c2accb6a9fcf0da36da52a1133b19b22d8d8 -address /run/containerd/containerd.sock├─ 2056 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id ab1923d1799e6ce10d7d08f0f291cc5d2e9089f63d318830b529bcc2d6a7e36b -address /run/containerd/containerd.sock├─ 2084 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id 856799f3bcd0ba75f0b73ea05503ea4a3a3d62dfccc6071185dca456ffabc390 -address /run/containerd/containerd.sock├─ 2228 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id 3da0d26340af3ba6382b98bbbb0b211c5f0df42d53ab591f545acbe34339a45a -address /run/containerd/containerd.sock└─24121 /usr/bin/containerdJun 25 14:04:56 k8s-master01 containerd[24121]: time="2024-06-25T14:04:56.074960872+08:00" level=info msg="Start subscribing containerd event"
Jun 25 14:04:56 k8s-master01 containerd[24121]: time="2024-06-25T14:04:56.075010828+08:00" level=info msg=serving... address=/run/containerd/containerd.sock.ttrpc
Jun 25 14:04:56 k8s-master01 containerd[24121]: time="2024-06-25T14:04:56.075016696+08:00" level=info msg="Start recovering state"
Jun 25 14:04:56 k8s-master01 containerd[24121]: time="2024-06-25T14:04:56.075048514+08:00" level=info msg=serving... address=/run/containerd/containerd.sock
Jun 25 14:04:56 k8s-master01 containerd[24121]: time="2024-06-25T14:04:56.132745672+08:00" level=info msg="Start event monitor"
Jun 25 14:04:56 k8s-master01 systemd[1]: Started containerd container runtime.
Jun 25 14:04:56 k8s-master01 containerd[24121]: time="2024-06-25T14:04:56.132788698+08:00" level=info msg="Start snapshots syncer"
Jun 25 14:04:56 k8s-master01 containerd[24121]: time="2024-06-25T14:04:56.132800032+08:00" level=info msg="Start cni network conf syncer for default"
Jun 25 14:04:56 k8s-master01 containerd[24121]: time="2024-06-25T14:04:56.132809839+08:00" level=info msg="Start streaming server"
Jun 25 14:04:56 k8s-master01 containerd[24121]: time="2024-06-25T14:04:56.132885290+08:00" level=info msg="containerd successfully booted in 0.089720s"

最后使用如下命令拉取在国外存在而国内镜像仓库无法拉取的镜像,check代理是否配置成功

crictl pull rancher/shell:v0.1.21

提示类似如下信息,表明镜像已经拉取成功

Image is up to date for sha256:4cf698201012ec6e83e84e75d52c1fa1f7d24517c51b60827022fe6e75a3cf0d

或者查看一下本地的镜像列表

crictl images | grep rancher/shell

能够看到刚才下载的如下镜像,表明containerd的配置也是OK的

docker.io/rancher/shell                                            v0.1.21                  4cf698201012e       136MB

http://www.ppmy.cn/devtools/56494.html

相关文章

使用Dockerfile构建镜像 使用docker-compose 一键部署IM项目

本文讲解&#xff1a;使用Dockerfile构建镜像 & 使用docker-compose 一键部署IM项目。 im项目地址&#xff1a;xzll-im &#xff0c;欢迎志同道合的开发者 一起 维护&#xff0c;学习&#xff0c;欢迎star &#x1f604; 1、Dockerfile编写与镜像构建&容器运行 Dockerf…

AI赋能视频剪辑师:人工智能时代,视频剪辑师该如何剪辑?

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的方方面面&#xff0c;视频剪辑行业也不例外。在这个全新的时代&#xff0c;AI技术为视频剪辑师带来了前所未有的便利和创新空间。那么&#xff0c;在人工智能时代&#xff0c;视频剪辑师…

文旅景区科技馆增加5D影院项目VR游乐场

王屋山风景名胜区增加20座5D影院设备&#xff0c;5D影院不像普通电影院&#xff0c;5D影院座椅可以根据影片播放内容&#xff0c;进行实时摆动和各种特效&#xff0c;闪电&#xff0c;振臀振臂&#xff0c;泡泡等个种特效。影片内容可以进行定制&#xff0c;根据景区文化风光&a…

PyCharm:功能强大的Python IDE的下载与安装

目录 1. PyCharm2. PyCharm优势2.1 智能代码完成和智能感知2.2 语法检查和错误提示2.3 调试和测试工具2.4 代码重构和管理2.5 版本控制集成2.6 用户界面和定制性2.7 高度优化的代码编辑器3. PyCharm下载4. PyCharm安装5. PyCharm的Python配置1. PyCharm 百度百科: PyCharm是一种…

SpringBoot:使用Spring Batch实现批处理任务

引言 在企业级应用中&#xff0c;批处理任务是不可或缺的一部分。它们通常用于处理大量数据&#xff0c;如数据迁移、数据清洗、生成报告等。Spring Batch是Spring框架的一部分&#xff0c;专为批处理任务设计&#xff0c;提供了简化的配置和强大的功能。本文将介绍如何使用Spr…

【高考志愿】集成电路科学与工程

目录 一、专业概述 二、课程设置 三、就业前景 四、适合人群 五、院校推荐 六、集成电路科学与工程专业排名 一、专业概述 集成电路科学与工程&#xff0c;这一新兴且引人注目的交叉学科&#xff0c;正在逐渐崭露头角。它集合了电子工程、计算机科学、材料科学等多个领域的…

Nginx

一、Nginx配置文件 1.1 主配置文件 主配置文件位置&#xff1a;nginx.conf tip&#xff1a;安装方式不同&#xff0c;路径不同 #主配置文件格式main block&#xff1a;主配置段&#xff0c;即全局配置段&#xff0c;对http,mail都有效#配置Nginx服务器的事件模块相关参数 e…

深入理解外观模式(Facade Pattern)及其实际应用

引言 在软件开发中&#xff0c;复杂的系统往往由多个子系统组成&#xff0c;这些子系统之间的交互可能非常复杂。外观模式&#xff08;Facade Pattern&#xff09;通过为这些子系统提供一个统一的接口&#xff0c;简化了它们的交互。本篇文章将详细介绍外观模式的概念、应用场…