代码之家  ›  专栏  ›  技术社区  ›  Cross

如何使用通配符设置docker的NO\u代理

  •  4
  • Cross  · 技术社区  · 6 年前

    如docker官方文件所述 here ,可以在此处分配docker的代理设置/etc/systemd/system/docker。服务d/https代理。形态,如:

    [Service]    
    Environment="HTTPS_PROXY=https://proxy.example.com:443/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
    

    但是,docker的下载涉及很多url重定向。所以在这里,我很难一一说出他们的名字。

    所以我的问题是,是否有任何方法可以实现通配符,例如*。docker。io。

    谢谢 交叉

    2 回复  |  直到 6 年前
        1
  •  6
  •   Kaneg    6 年前

    在NO\U代理中,可以使用通配符匹配具有相同域的多个主机。对于*。docker。io,您可以使用 .docker。io

        2
  •  4
  •   Daniel Campos Olivares    3 年前

    我知道这是几年前的一个问题,但我想这对于开发人员来说仍然是一个常见的问题,我觉得这个问题没有得到正确的回答。

    关于@Kaneg批准的答案,实际上是领先的 . 在大多数情况下都会成功。。。但并非总是如此。

    有鉴于此,我写下了这个答案,以防将来有更多的人会出现在这个问题上。


    首先,我们必须记住 NO_PROXY 是大多数Web客户端在使用Web代理服务器时都接受的一个环境变量,但对于如何定义它或每个客户端应如何处理这些变量没有标准。

    当我们将Docker中的这些设置为环境变量时,我们只是强制将来创建的所有容器使用这些环境变量,它们也将用于Docker(例如从官方注册表下载图像)。无论如何,真正的交易取决于我们在这些容器内有什么,因为这是要求变得严格的地方。

    为了最大限度地简化,我从 GitLab blog (谢谢你,斯坦·胡):

    卷曲 wget公司 红宝石 python
    no_proxy
    无\u代理
    大小写优先级 小写字母 仅小写 小写字母 小写字母 小写字母
    匹配后缀?
    带引线 ?
    * maches所有主机?
    支持正则表达式?
    支持CIDR块?
    检测环回IP?
    参考 link link link link link

    这是什么意思?

    如果我们按照逻辑 无\u代理 首先,这些工具无法理解 wget ,所以他们无论如何都会通过代理;如果我们能领先 无\u代理 curl 将始终剥离领先者 同时 wget公司 不会将其剥离,并将对主机名执行精确的字符串匹配。

    解决方案

    后缀总是匹配的,所以最好的解决方案是设置 docker.io 因为它将包括 whatever.docker.io .尽量避免使用前导点( )如果在任何情况下都需要匹配顶级域。