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

巴拉Satish
2023-01-22十一10

Nir Ovadia编辑

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

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

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

注意:对于有VPC处理流量的AWS机器,dockerhub绕过production.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 "Authorization: Bearer $TOKEN"
这将显示重定向到production.cloudflare.docker.com,或docker-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 >

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

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