如果您的Docker注册表位于防火墙和代理服务器之后,请将以下内容列入白名单

巴拉Satish
2023-01-22十一10

Nir Ovadia编辑

当使用Artifactory作为Docker注册表(可能在防火墙和反向代理服务器(如Nginx和Apache)后面),您可能需要允许访问外部主机,因为Docker Hub使用多个主机及其内容分发网络(CDN)来提供内容。

您可以允许流量访问以下主机:

注意:在撰写本文时,上述地址已经过测试和验证。由于这些不在JFrog的控制范围内,因此将来可能无法使用这些访问。

注意:对于使用VPC处理流量的AWS机器,dockerhub会绕过produc.cloudflare.docker.com后端,请求直接发送到机器所在区域的docker-images-prod S3桶。在这些场景中,您可以在VPC中添加一个docker-images-prod*规则,以允许所有docker的S3桶,或者找到您的机器正在访问的特定桶。你可以通过从docker获取一个令牌来查看你有哪个重定向

旋度https://auth.docker.io/token?service=registry.docker.io&scope=repository:library/hello-world:pull

然后用那个标记来击中其中一层curl -vvv -L -I https://registry-1.docker.io/v2/library/hello-world/blobs/sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412 -H "授权:不记名$TOKEN"
这将显示一个重定向到production.cloudflare.docker.com,或dock-images-prod.s3 .*

故障排除

如果你看到Docker层下载失败,比如未知的blob或其中一层下载失败,你可能需要通过添加以下记录器来跟踪请求,到$ARTIFACTORY_HOME/etc/logback.xml文件中。这样的更改不需要重新启动才能生效。Artifactory版本6的记录器:-

<文件> $ {artifactory.home} /日志/ http.log > < /文件
<编码器>
<模式> % $ {artifactory日期。contextId}[%线程][% 5 p] \ (% -20 c {3}: % L \) - m % n % > < /模式
< /编码器>
< rollingPolicy class = " ch.qos.logback.core.rolling.FixedWindowRollingPolicy " >
< FileNamePattern > $ {artifactory.home} /日志/ http. % i.log < / FileNamePattern >
13 < maxIndex > < / maxIndex >
< / rollingPolicy >
< triggeringPolicy class = " ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy " >
< MaxFileSize > 10 mb < / MaxFileSize >
< / triggeringPolicy >
< / appender >

<记录器name = "表示。http“可加性= " false " >
<级别值= "跟踪" / >
< appender-ref ref = " http " / >
< / logger >

Artifactory版本7的记录器:-
<文件> $ {log.dir} / artifactory-http.log > < /文件
< rollingPolicy class = " org.www.si-fil.common.logging.logback.rolling.FixedWindowWithDateRollingPolicy " >
< FileNamePattern > $ {log.dir.archived} / artifactory-http. % i.log.gz < / FileNamePattern >
10 < maxIndex > < / maxIndex >
< / rollingPolicy >
< triggeringPolicy class = " ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy " >
< < MaxFileSize > 25 mb / MaxFileSize >
< / triggeringPolicy >
<编码器类= " ch.qos.logback.core.encoder.LayoutWrappingEncoder " >
<布局类= " org.www.si-fil.common.logging.logback.layout.BackTracePatternLayout " >
<模式> % {yyyy-MM-dd不'HH: mm: ss。瑞士,UTC} Z [jfrt] [% 5 p] [% -16 x {uber-trace-id}] [% -30.30 (% c {3}: % L)][% -20.20线程]- m % n % > < /模式
> < /布局
< /编码器>
< / appender >

<记录器name = "表示。http“可加性= " false " >
<级别值= "跟踪" / >
< appender-ref ref = " http " / >
< / logger >

通过使用记录器,您可以跟踪请求,以确定它们是否到达了正确的端点。注意:一旦捕获了请求,就应该删除记录器,因为它们在生产服务器上的持续操作可能最终导致性能下降。

您还可以通过使用转发代理跟踪到预期端点的流量流,例如查尔斯(见下图截图)。
用户添加图片