首页 > 其他分享 >虚拟机通过宿主机代理实现从外网拉取镜像的方法

虚拟机通过宿主机代理实现从外网拉取镜像的方法

时间:2024-07-07 23:10:39浏览次数:7  
标签:172.164 127.0 0.1 17.100 虚拟机 宿主机 网拉取 7890

 

先看一下配置前的效果,在拉取镜像时等待了1分钟,毫无进展

root@Y76-K8s-Master01:~# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
ea235d1ccf77: Retrying in 1 second 
e29cef106877: Retrying in 1 second 
e9bf20d5335e: Retrying in 1 second 
1394e86b8f58: Waiting 
7b2b3e0f512f: Waiting 
6a11b5a77155: Waiting 
fb6d6e4aad9c: Waiting

 接下来我们进行配置,打开宿主机上的代理软件(步骤略,切记需要让代理软件允许局域网链接),在宿主机上查看代理软件监听端口

# netstat -ntl |grep 7890
tcp4       0      0  127.0.0.1.7890                                127.0.0.1.60486                               ESTABLISHED
tcp4       0      0  127.0.0.1.60486                               127.0.0.1.7890                                ESTABLISHED
tcp4       0      0  127.0.0.1.7890                                127.0.0.1.60440                               ESTABLISHED
tcp4       0      0  127.0.0.1.60440                               127.0.0.1.7890                                ESTABLISHED
tcp4       0      0  127.0.0.1.7890                                127.0.0.1.60407                               ESTABLISHED
tcp4       0      0  127.0.0.1.60407                               127.0.0.1.7890                                ESTABLISHED
tcp4       0      0  127.0.0.1.7890                                127.0.0.1.59913                               ESTABLISHED
tcp4       0      0  127.0.0.1.59913                               127.0.0.1.7890                                ESTABLISHED
tcp4       0      0  127.0.0.1.60458                               127.0.0.1.7890                                TIME_WAIT  
tcp4       0      0  127.0.0.1.60526                               127.0.0.1.7890                                TIME_WAIT  
tcp4       0      0  127.0.0.1.60508                               127.0.0.1.7890                                TIME_WAIT  
udp4       0      0  127.0.0.1.7890                                *.*                                                      

 

虚拟机端测试是否访问宿主机端口

root@Y76-K8s-Master01:~# ping 172.164.17.100
PING 172.164.17.100 (172.164.17.100): 56 data bytes
64 bytes from 172.164.17.100: icmp_seq=0 ttl=128 time=0.784 ms
64 bytes from 172.164.17.100: icmp_seq=1 ttl=128 time=1.253 ms
^C--- 172.164.17.100 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.784/1.018/1.253/0.235 ms
root@Y76-K8s-Master01:~# telnet 172.164.17.100 7890
Trying 172.164.17.100...
Connected to 172.164.17.100.
Escape character is '^]'.

 虚拟机能正常访问到宿主机端口,接下来在虚拟机系统内配置Proxy

root@Y76-K8s-Master01:/usr/lib/systemd/system# pwd
/usr/lib/systemd/system
root@Y76-K8s-Master01:/usr/lib/systemd/system# vim docker.service 
# 在[Service]处添加以下两行信息,将流量代理给宿主机的7890端口出外网
Environment="HTTPS_PROXY=http://172.164.17.100:7890"
Environment="HTTP_PROXY=http://172.164.17.100:7890"

root@Y76-K8s-Master01:/usr/lib/systemd/system# systemctl daemon-reload 
root@Y76-K8s-Master01:/usr/lib/systemd/system# systemctl restart docker 
root@Y76-K8s-Master01:/usr/lib/systemd/system# time docker pull nginx 
Using default tag: latest
latest: Pulling from library/nginx
ea235d1ccf77: Pull complete 
e29cef106877: Pull complete 
e9bf20d5335e: Pull complete 
1394e86b8f58: Pull complete 
7b2b3e0f512f: Pull complete 
6a11b5a77155: Pull complete 
fb6d6e4aad9c: Pull complete 
Digest: sha256:67682bda769fae1ccf5183192b8daf37b64cae99c6c3302650f6f8bf5f0f95df
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

real    0m7.408s
user    0m0.028s
sys     0m0.014s

 到这里就可以完成让docker通过宿主机的7890端口出外网拉取镜像了,此种方法适用于K8S中使用Containerd去拉取镜像,但需注意的是,在Containerd中配置代理,可能会导致Pod无法正常进行健康检查,例如 就绪探针下的配置是访问某个IP得到返回值来判断健康检查是否能正常通过。原因在于,配置了Proxy转发后,访问是通过宿主机的7890端口去进行寻址的,而宿主机开启了此端口,意味着从7890端口出去的流量是直接面向internet的。

解决方法:在Containerd下进行地址排除,过滤掉K8S中的网段不通过宿主机的7890端口作为出口地址

# 在Containerd.service下的[Service]配置以下内容
Environment="HTTPS_PROXY=http://172.164.17.100:7890"
Environment="HTTP_PROXY=http://172.164.17.100:7890"
Environment="NO_PROXY=localhost,127.0.0.1,172.16.0.0/12,10.96.0.0/12,10.244.0.0/16"

 

标签:172.164,127.0,0.1,17.100,虚拟机,宿主机,网拉取,7890
From: https://www.cnblogs.com/Ky150/p/18289080

相关文章

  • Java虚拟机(JVM):深入理解与性能调优
    引言Java虚拟机(JVM)是Java平台的核心组件,它使得Java程序具有跨平台运行的能力。JVM不仅负责执行Java字节码,还管理着内存分配、垃圾回收等关键任务。深入理解JVM的工作原理对于进行有效的性能调优至关重要。本文将详细介绍JVM的工作原理,包括内存模型、垃圾回收机制,并分享一些实......
  • 关于虚拟机的使用
    1、从网上下载了Centos7  2024年CentOS镜像下载地址,包括CentOS官网、国内镜像下载,超详细教学,小白也能学会。-CSDN博客2、通过VMware添加了该iso文件,打开虚拟机之后安装该系统就可以了3、进入之后我们需要进行软件安装、安装位置、KDUMP、网络和主机名的修改操作其中,为了......
  • 一文带你了解Java虚拟机垃圾收集器
    如果你的世界,没有痛苦的害怕,没有尊严的担忧,没有富贵的贫贱,没有暖寒的交替,没有外貌的困扰,没有男女的区别,没有你我之分,没有生死顾虑,你才会离"真正的活着"越来越近。——余华《活着》在上一篇内容中我们提到在Java虚拟机中主要是通过标记整理、复制拷贝、标记清除三种算法进行内......
  • Vscode连接虚拟机报错
    Vscode连接虚拟机报错问题解决问题解释Permissiondenied,pleasetryagain.出现这个问题通常表示身份验证失败。可能的原因有SSH用户密码错误SSH端口非默认SSH配置文件问题虚拟机SSH服务问题:可能SSH服务没有正常启动或防火墙阻止了SSH连接ip地址错误问题分析重新检......
  • Vmware Ubuntu虚拟机安装Docker心得
    如果添加download.docker.comapt源失败的话,可以将此链接改为阿里云的链接:http://mirrors.aliyun.com/docker-ce/linux/ubuntu/sudoadd-apt-repository"deb[arch=amd64]http://mirrors.aliyun.com/docker-ce/linux/ubuntu/$(lsb_release-cs)stable"否则sudoaptinstal......
  • Linux虚拟机配置杂项问题汇总
    下面提到的相关问题,大部分是基于Ubuntu系统进行操作的,因为CentOS在我目前实践中涉及较少。因此如无明确提及系统,均默认在Ubuntu、debian一类系统中操作。1、更新root密码:新创建的虚拟机有时没有设置root密码导致进入root权限麻烦,使用如下命令可以设置密码。sudopasswdroot2......
  • 关于虚拟机上不了网的解决办法
    先ping出ip地址  或者查询ifconfig得到目前网络信息继续输入命令Ifconfig-a查询是否能找到ip地址明显ens33是没有打开的,所以找不到分配的ip地址,需要打开,自动随机分配ip输入命令:sudo dhclient ens33现在就可以开始上网了......
  • 如何给虚拟机中centos7设置静态ip和能够访问外网
    1.打开终端,并进入network-scripts文件夹下(必须要root角色登录,以获取修改权限)cd/etc/sysconfig/network-scripts/2.打开ifcfg-ens33 viifcfg-ens33 3.确认虚拟机ip起始,以设置静态ip,确认网关和dns1,以设置网关掩码  4.打开ifcfg-ens33,设置静态路由,并打开网络开关......
  • Hyper-V虚拟机固定IP地址(手把手教设置)
    链接虚拟机修改网络配置文件输入指令sudovi/etc/sysconfig/network-scripts/ifcfg-eth0然后输入 按 i 键再按回车(enter)进入编辑模式修改配置(这几项)其中 IPADDR就是你想给虚拟机固定的IP地址多台的话只需要修改这个IP就行其他不变BOOTPROTO=staticI......
  • 在vmare中创建centos虚拟机
    1,环境window11vmareworkstation172. 3, 4这里是因为一会儿可以使用自己下载的镜像文件 5.选择用户操作系统linux  6. 7. 8. 9. 10. 11. 12, 13. 14. 15 ......