一文讲透如何给Docker设置代理
今日分享
在商业的世界里,价值和需求是一体两面的,你自己认为它有价值,不代表它有商业价值。
符合对方的需求,对方愿意为它付费,它才具有商业价值。
所以,做出有价值的东西和做出具有商业价值的东西,是两回事。
Docker相关的网络环境问题一直是困扰开发者的难题,尤其是近半年以来,拉取 Docker 官方镜像仓库的镜像都变得非常麻烦,运气好的话,超时十来次之后你也许能拉取下来,运气不好的话,你一晚上都下载不完一个镜像。
本文介绍如何通过设置代理的方式,解决 Docker 使用过程遇到的各种网络问题。
注意:
本文默认你的本机电脑已经具备科学上网的环境了。如果你还不知道如何科学上网,那么请先去看看其他的入门文章。
# Docker 程序安装
如果你使用的是 windows 或者 Mac 系统,那么你通常可以直接通过浏览器去下载安装文件,然后直接安装就行。
但是如果你是想在Linux服务器上安装 Docker,通常你需要通过终端命令行来安装,那么你会遇到第一问题,没法更新到 Docker 的软件源,大量出现超时的错误,从而导致安装失败。解决方法很简单,你只需要在终端导出你的 HTTP 代理地址就好了。
export https_proxy=http://172.22.11.200:7777
export http_proxy=http://172.22.11.200:7777
需要 172.22.11.200:7777
是你的代理主机的 IP 地址和端口。这些信息你打开你本地的代理工具就能看到,我这里以 clash 这款软件为例,进入软件主界面,选择 General
菜单就能看到。
这里记得要打开 ALLOW LAN
开关,这样就可以允许任何主机通过内网 IP 来连接你的代理服务,否则你就只能在当前主机通过 127.0.0.1 来连接,其他机器没法连接该服务。端口你可以随便改,IP 是当前代理主机的内网IP。
如果你想给外网服务器使用,那你就需要把这个代理端口内网穿透出去,这个我后面会专门写一篇教程。
# 通过代理拉取或者推送国外镜像
在国内拉取 Docker 中央仓库的镜像本来就速度就一直比较慢,近期就更慢了,基本处于一个不可达的状态。当然我们可以通过设置国内一些加速镜像器来加速镜像下载。但是国内镜像不全,更新也不及时,如果你要下载的镜像国内加速器上没有的话,你最终还是要 Docker 中央仓库镜像去下载。
此时我们可以通过给 Docker 镜像下载器配置一个代理来一劳永逸地解决问题。如果你使用的 Docker-Deskop 桌面版,那么你可以直接通过图形界面设置就好。
如果你的 Docker 服务是跑在服务器上,那么配置会稍微复杂一些。因为 Docker 守护程序(dockerd)是在其启动环境中使用 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 环境变量来配置 HTTP 或 HTTPS 代理行为,需要在 Docker systemd 服务文件中添加此配置。 在 daemon.json 文件或者是在系统环境变量文件中配置它们都不会使其生效。具体的配置步骤如下。
在
/etc/systemd/system
目录下创建 docker.service.d 目录:sudo mkdir -p /etc/systemd/system/docker.service.d
在该目录下创建
http-proxy.conf
文件:vim /etc/systemd/system/docker.service.d/http-proxy.conf
根据自身需要添加下面的内容并替换为实际的配置,一般只需要添加
HTTP_PROXY
和HTTPS_PROXY
:[Service] Environment="HTTP_PROXY=http://172.22.11.200:7777" Environment="HTTPS_PROXY=http://172.22.11.200:7777" Environment="NO_PROXY=localhost,127.0.0.1"
注意: HTTP_PROXY 用于代理访问 http 请求,HTTPS_PROXY 用于代理访问 https 请求,如果想某个 IP或域名不走代理则配置到 NO_PROXY中。
重启 Docker 服务
sudo systemctl daemon-reload sudo systemctl restart docker
# Docker 容器中使用代理
如果想在 Docker 容器中使用代理访问外部网络,可以在启动容器的时候注入环境变量即可:
docker run --name test -e http_proxy=http://172.22.11.200:7777 -e https_proxy=http://172.22.11.200:7777 test:latest
如果是通过 docker-compose 启动,则需要在 docker-compose.yaml 配置文件中增加注入环境变量,例如:
services:
comfyui:
image: "test:latest"
container_name: "test"
restart: always
ports:
- "8080:8080"
environment:
- HTTPS_PROXY=http://172.22.11.200:7777
- HTTP_PROXY=http://172.22.11.200:7777
# 参考文献
- https://blog.csdn.net/peng2hui1314/article/details/124267333
本站博文如非注明转载则均属作者原创文章,引用或转载无需申请版权或者注明出处,如需联系作者请加微信: geekmaster01