我们正在Docker容器中运行Artifactory 5.11.0(今天只更新到6.0.2并且还没有看到这个),当我们的自动化从Artifactory执行docker pull
时,9/10次它很成功。有时,即使从托管Artifactory的计算机上运行docker pull
,docker pull
也会失败并显示:
拉动#docker。{artifactory url} / staging:latest' ... 来自守护程序的错误响应:获取http://docker。{artifactory url} / v2 / staging / manifests / latest:获取http://docker。{artifactory url}:80 / artifactory / api / docker / docker / v2 / token ?account = admin& scope = repository%3Astaging%3Apull& service = docker。{artifactory url}%3A80: net / http:请求已取消(等待时已超出Client.Timeout 头)
就像我说的那样,大部分时间这都是完美的,但是1/10(可能更少)我们在自动构建过程中遇到了上述错误。我试着在一个while循环中运行docker pull
一夜,直到它出现故障并且没有失败。一夜之间冉平,没有丢包。
答案 0 :(得分:0)
这是JFrog提供给我的解决方案。 (注意:当时我们使用的是Artifactory的较旧版本,他们确实建议我们将其更新为最新版本,因为有一些更新可能会有所帮助。)
The RAM value -Xmx 2g was the default value provided by Artifactory. We can increase that value by going into the Docker container "docker exec -it artifactory bash" and then $Artifactory_Home/bin/artifactory.default ( Mostly: - /opt/jfrog/artifactory/bin/artifactory.default) and we can change the RAM value accordingly. Please follow this link for more information. We should also change the access max threads count and we can do that by going to $Artifactory_Home/tomcat/config/server.xml and change it to: <Connector port="8040" sendReasonPhrase="true" maxThreads="<200>"/> Also add below line in /var/opt/jfrog/artifactory/etc/artifactory.system.properties artifactory.access.client.max.connections=200 To deal with heavy loads we need to append the below line in /var/opt/jfrog/artifactory/etc/db.properties.Please follow this link for more information. pool.max.active=200
另外,他们告诉我要确保在通过Artifactory而非用户/密码登录对Docker客户端进行身份验证时,我们使用的是API密钥,因为后者将通过我们的ldap身份验证,而前者则不会:
要尝试的一件事是使用API密钥而不是纯文本密码,因为使用API密钥将无法连接到LDAP服务器。
我们已经在这样做,所以这对问题没有影响。
我希望这对我们有所帮助。