简记:为Docker配置服务代理

举报
jcLee95 发表于 2024/06/09 23:10:09 2024/06/09
【摘要】 关于为Docker配置服务代理
简记
为Docker配置服务代理

文章信息 -
Author: 李俊才 (jcLee95)
Visit me at CSDN: https://jclee95.blog.csdn.net
My WebSitehttp://thispage.tech/
Email: 291148484@163.com.
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/139562987
HuaWei:https://bbs.huaweicloud.cn/blogs/428728

本文全在合规范围内进行讲解,不包含跨越不可抗力阻扰内容,主要为多数能够自行通过合法途径 的技术人在特定环境下介绍配置Docker代理。

在这里插入图片描述


【介绍】:本文主要关于在一台windows上为另外Linux主机上Docker提供代理访问的相关步骤。

在这里插入图片描述


 

想必大陆地区很多免费镜像停服如上交Docker镜像,给很多自己在做Docker相关项目的小伙伴带来了一些没有必要的麻烦。其实我个人而言主要使用的还是官方源,不论是虚拟机还是物理机,主要是镜像更新全面和及时。

因此我想介绍在一个局域网内,使用一台主机作为代理服务,其它主机通过这个服务访问外网,进而配置Docker代理的步骤。

本文全在合规范围内进行讲解,不包含跨越不可抗力阻扰内容,主要为多数能够自行通过合法途径 的技术人在特定环境下介绍配置Docker代理。

这里一个具体背景描述如下:

我有一个外网服务器可惜之只能运行于Windows/Mac系统上,但是目前我希望在另外一台同网段Linux主机上通过代理访问外网流量。现在需要做的事情如下:

在Windows主机上,假设设置外网服务监听的是7890端口,但是默认情况下,它仅仅针对于当前主机有效,也就是说,外网服务监听的是本地。

在其它的所有同一网络的Liniux主机上,通过这台Windows的代理服务访问外网,进而使用Docker官方源。

 
 

这个部分不需要讲解,一般看文章的人都是高手。

 

确保Windows防火墙已经关闭。可以临时禁用防火墙来进行测试:

netsh advfirewall set allprofiles state off

后续停用时请记得重新启用防火墙:

netsh advfirewall set allprofiles state on
 

你可以依据自己的需要选择一种方式。

 

要在同网段的Ubuntu主机上使用Windows主机上的VPN代理,你可以按照以下步骤进行配置:

  1. 确保Windows主机上的Clash和Nginx都已经正确配置并启动,并且Windows防火墙允许其他主机访问Nginx监听的端口(如7890)。

  2. 在Ubuntu主机上,打开终端。

  3. 安装proxychains,它是一个命令行工具,可以让任何程序通过代理运行。可以使用以下命令安装:

sudo apt update
sudo apt install proxychains
  1. 配置proxychains。打开proxychains的配置文件:
sudo vim /etc/proxychains.conf
  1. 在配置文件的末尾,按照下面的格式编写添加代理:
http 服务端主机IP VPN服务端口号

这里你应该修改为你自己启用的服务端IP和端口号,比如:

http 192.168.31.6 7890
  1. 保存文件并退出编辑器。

  2. 现在,可以通过在命令前加上proxychains来使任何命令通过代理运行。例如:

proxychains curl https://www.google.com

这将通过代理访问Google。

 

如果你想让整个系统都使用代理,可以设置环境变量http_proxyhttps_proxy

export http_proxy=http://服务端主机IP:VPN服务端口号
export https_proxy=http://服务端主机IP:VPN服务端口号

例如:

export http_proxy=http://192.168.31.6:7890
export https_proxy=http://192.168.31.6:7890

然后在远程到外网的服务端(我这里为:192.168.31.236的一台主机),在客户端主机上,测试服务端主机``

curl --proxy http://192.168.31.6:7890 https://www.google.com

在这里插入图片描述

 

有些场景下,为了避免每次都手动设置环境变量,你可以将这些环境变量添加到你的shell配置文件中(如~/.bashrc~/.bash_profile),这样每次启动终端时都会自动加载这些设置。

vim  ~/.bashrc

然后在文件末尾添加以下行:

export http_proxy=http://服务端主机IP:VPN服务端口号
export https_proxy=http://服务端主机IP:VPN服务端口号

例如:

export http_proxy=http://192.168.31.6:7890
export https_proxy=http://192.168.31.6:7890

保存并退出编辑器,然后使更改生效:

source ~/.bashrc
 
 

在内地网络环境中,直接访问外网可能会受到限制或速度较慢。通过配置代理服务器,可以绕过这些限制并加速访问外网资源。对于Docker来说,配置代理服务器可以显著提高拉取镜像的速度,特别是在需要频繁拉取和更新镜像的开发和测试环境中。

 
 
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/http-proxy.conf
 
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

在配置文件中,添加以下内容:

[Service]
Environment="HTTP_PROXY=http://服务端主机IP:VPN服务端口号"
Environment="HTTPS_PROXY=http://服务端主机IP:VPN服务端口号"
Environment="NO_PROXY=localhost,127.0.0.1"

例如:

[Service]
Environment="HTTP_PROXY=http://192.168.31.6:7890"
Environment="HTTPS_PROXY=http://192.168.31.6:7890"
Environment="NO_PROXY=localhost,127.0.0.1"

这里我使用的依然是192.168.31.6和端口7890。请将http://192.168.31.6:7890替换为你实际的代理服务器地址和端口。

NO_PROXY环境变量指定了不应该通过代理访问的主机或域名,通常包括本地主机和回环地址。

 
  1. 重新加载Docker服务配置:
sudo systemctl daemon-reload
  1. 重启Docker服务:
sudo systemctl restart docker
 

你可以使用docker info验证代理设置是否生效:

docker info

你可以在输出中看到这个格式:

HTTP Proxy: http://服务端主机IP:VPN服务端口号
HTTPS Proxy: http://服务端主机IP:VPN服务端口号

比如:

HTTP Proxy: http://192.168.31.6:7890
HTTPS Proxy: http://192.168.31.6:7890

如图所示:
在这里插入图片描述

现在我们可以试试拉取官方镜像看看是否很快拉取成功:

在这里插入图片描述
可见瞬间就成功拉取了,说明通过代理成功。

最后停用时,请记得在Windows主机侧重新启用防火墙:

netsh advfirewall set allprofiles state on
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。