简记:为Docker配置服务代理
Visit me at CSDN: https://jclee95.blog.csdn.net
My WebSite:http://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代理,你可以按照以下步骤进行配置:
-
确保Windows主机上的Clash和Nginx都已经正确配置并启动,并且Windows防火墙允许其他主机访问Nginx监听的端口(如7890)。
-
在Ubuntu主机上,打开终端。
-
安装proxychains,它是一个命令行工具,可以让任何程序通过代理运行。可以使用以下命令安装:
sudo apt update
sudo apt install proxychains
- 配置proxychains。打开proxychains的配置文件:
sudo vim /etc/proxychains.conf
- 在配置文件的末尾,按照下面的格式编写添加代理:
http 服务端主机IP VPN服务端口号
这里你应该修改为你自己启用的服务端IP和端口号,比如:
http 192.168.31.6 7890
-
保存文件并退出编辑器。
-
现在,可以通过在命令前加上
proxychains
来使任何命令通过代理运行。例如:
proxychains curl https://www.google.com
这将通过代理访问Google。
如果你想让整个系统都使用代理,可以设置环境变量http_proxy
和https_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
环境变量指定了不应该通过代理访问的主机或域名,通常包括本地主机和回环地址。
- 重新加载Docker服务配置:
sudo systemctl daemon-reload
- 重启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
- 点赞
- 收藏
- 关注作者
评论(0)