Docker、Containerd添加代理
Docker、Containerd配置代理
Docker、Containerd添加代理
博文的由来
国内网络环境下使用过docker的小伙伴,多数都会碰到一个一问题,由于连不上国外的dockerhub,导致无法pull需要的镜像,解决方案基本就四种
- 将镜像仓库地址切换到国内的镜像仓库
- 使用别人打好的镜像包,使用 load命令导入到本地镜像仓库
- 使用代理来连接国外的docker镜像库
- 下载源码,编译成镜像,推送到本地的镜像仓库,然后从本地镜像仓库拉取所需镜像
-
第一种方式,像redis、mysql、postgreSQL、RabbitMQ等等,这些热门镜像国内的镜像仓库都是有我们需要的镜像版本,然而,当我们使用一些新的镜像版本时,国内镜像仓库多数情况下是没有的。
-
第二种方式,需要从网络资源、朋友、同事那儿获取到,打包好的镜像,工作中及其不方便,严重影响工作效率。
-
第三种方式,使用代理来连接国外的镜像仓库,这种方式在工作中会经常使用,因为大多数技术的官方文档中提到的版本,在国外的镜像仓库中都有对应的版本,使用起来快捷省力,节省时间,工作效率高。
-
第四种方式,自己下载源码,并制作镜像,推送到本地镜像仓库。当时间充裕时,这种方式也是个不错的选择,但是但是门槛相对较高。
下面主要介绍一下如何使用代理来连接国外的镜像仓库
docker环境下使用代理
docker环境下,有两种方式可以给docker配置代理服务器
- 新增或修改/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:port
HTTPS Proxy: http://ip:port
No 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
- 新增 /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:port
HTTPS Proxy: http://ip:port
No 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 runtime
Loaded: loaded (/etc/systemd/system/containerd.service; disabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/containerd.service.d
└─http-proxy.conf
Active: active (running) since Tue 2024-06-25 14:04:56 CST; 1h 41min ago
Docs: https://containerd.io
Main PID: 24121 (containerd)
Tasks: 103
Memory: 132.8M
CGroup: /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/containerd
Jun 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
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)