正如 docker 官方文档中提到的here https://docs.docker.com/config/daemon/systemd/#configure-where-the-docker-daemon-listens-for-connections,docker的代理设置可以在这里分配/etc/systemd/system/docker.service.d/https-proxy.conf,例如:
[Service]
Environment="HTTPS_PROXY=https://proxy.example.com:443/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
但是,docker的下载涉及到很多url重定向。所以我在这里的设定中几乎没有一一说出他们的名字。
所以我的问题是有没有什么方法可以实现通配符,例如*.docker.io。
谢谢,
叉
我知道这是几年前的问题,但我想这仍然是开发人员的常见问题,我认为它没有得到正确的回答。
关于 @Kaneg 批准的答案,实际上是一个领先的.
在大多数情况下都会起作用......但并非总是如此。
因此,我写下这个答案是为了防止将来有更多的人遇到这个问题。
首先,我们必须牢记的是,著名的NO_PROXY
是大多数 Web 客户端在使用 Web 代理服务器时接受的环境变量,但没有关于如何定义它或每个客户端应如何处理这些变量的标准。
当我们在 Docker 中将这些设置为环境变量时,我们只是强制将来创建的所有容器使用这些环境变量,它们也将用于 Docker(例如从官方注册表下载镜像) )。无论如何,真正的问题取决于我们在这些容器内有什么,因为这才是要求变得严格的地方。
为了最大限度地简化这个过程,我从亚搏体育appGitLab博客 https://about.gitlab.com/blog/2021/01/27/we-need-to-talk-no-proxy/(谢谢胡彦斌):
|
curl |
wget |
Ruby |
Python |
Go |
no_proxy |
Yes |
Yes |
Yes |
Yes |
Yes |
NO_PROXY |
Yes |
No |
Yes |
Yes |
Yes |
Case precedence |
lowercase |
lowercase only |
lowercase |
lowercase |
lowercase |
Matches suffixes? |
Yes |
Yes |
Yes |
Yes |
Yes |
Strips leading . ? |
Yes |
No |
Yes |
Yes |
No |
* maches all hosts? |
Yes |
No |
No |
Yes |
Yes |
Supports regexes? |
No |
No |
No |
No |
No |
Supports CIDR blocks? |
No |
No |
Yes |
No |
Yes |
Detects loopbacks IPs? |
No |
No |
No |
No |
Yes |
Reference |
link https://github.com/curl/curl/blob/30e7641d7d2eb46c0b67c0c495a0ea7e52333ee2/lib/url.c#L2152-L2206 |
link https://github.com/jay/wget/blob/099d8ee3da3a6eea5635581ae517035165f400a5/src/retr.c#L1266-L1274 |
link https://github.com/ruby/ruby/blob/0ed71b37fa9af134fdd5a7fd1cebd171eba83541/lib/uri/generic.rb#L1545-L1554 |
link https://github.com/python/cpython/blob/030a713183084594659aefd77b76fe30178e23c8/Lib/urllib/request.py#L2519-L2551 |
link https://github.com/golang/go/blob/682a1d2176b02337460aeede0ff9e49429525195/src/vendor/golang.org/x/net/http/httpproxy/proxy.go#L170-L206 |
这是什么意思?
如果我们只是遵循设置领先的逻辑.
in the NO_PROXY
,首先,像这样的工具无法理解这个wget
,所以它们无论如何都会通过代理;如果我们设置领先.
as no_proxy
still curl
总是会剥夺领先的.
同时wget
不会剥离它,并将对主机名执行精确的字符串匹配。
Solution
后缀总是匹配的,所以最好的解决方案是设置docker.io
因为它将包括whatever.docker.io
。尽量避免使用前导点 (.
) 如果在每种情况下都需要匹配顶级域。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)