如何排除Docker问题

帕特里克·罗素
2023-01-22 11:09

相关版本:这个信息与…有关Artifactory 4.0.2及以上版本

在排除Docker错误时,最好比较一下是什么应该发生的反对你的系统目前经历.通过模拟可以消除大量的噪声每一个步骤您的客户端正在检查Artifactory返回的HTTP错误代码。一般来说,这些是错误代码你可能遇到的和它们的意思:

403和401:身份验证问题,检查授权设置
404:资源未找到,请在存储库中查找该资源
400:不正确的请求,使用旋度得到理由短语
50 x:服务器问题,检查artifactory.log

使用旋度

Libcurl终端应用程序能基本运行REST API命令,如GET或PUT选项。你Artifactory请求日志将显示Docker客户端使用的确切API命令。你可以用那个失败(如request.log文件中所列)或使用其中之一例子尝试获取有关所遇到问题的进一步信息,以及可能的下一步步骤。

基本用法(带#comments):

curl -uadmin #Artifactory-username -vvv #verbosy -k #ignore-insecure-SSL -XGET #GET-request http://localhost:8081/artifactory/api /系统/平

cURL默认使用GET请求。其他命令,比如,要求字段,以及一个(通常是JSON)数据有效载荷.下面是一个PUT命令示例:

curl -uadmin:password -XPUT -H"Content-type: Application/json" -data " {"name":"test-group"}' http://localhost:8081/artifactory/api/security/groups/test-group

Docker登录Docker .art.local

当用户尝试使用Docker对Artifactory进行身份验证时,会出现以下后端步骤:

Docker登录Docker .art.local

码头工人“在码头工人.art。Local是虚拟存储库的名称
* .art.local是否为子域Docker存储库配置了反向代理使用的web地址

1.Docker客户端检查Artifactory是否存在匿名得到要求:

[$ ARTIFACTORY_HOME /日志/ request.log]
20180523095407 | | 0 |请求127.0.0.1 | non_authenticated_user | | / api /码头工人/码头工人/ v2 / HTTP / 1.0 | |401| 0

401HTTP代码如果Artifactory不允许对所讨论的存储库进行匿名访问,那么应该会出现这种情况。如果一个200好了被Docker客户端看到,那么凭证将不会被使用。

2.Docker客户端获得一个访问令牌:

10042 | 20180523095417 | | 127.0.0.1请求管理| | | / api /码头工人/码头工人/ v2 /令牌| | HTTP / 1.0200| 0

这可以通过以下cURL命令复制:

curl -u http://art.local:8081/artifactory/api/docker/docker/v2/token

它返回一个带有以下令牌值的JSON:

{“令牌”:“AKCp5Z3WYHpAyga9aYGuG4ESxLtC3Y1MAXUmfUemaKmrYvSpsesD4nsX2ezymTjMJLWowZ5LA”,“expires_in”:3600}

Docker拖拽Docker .art.local/nginx

当用户试图拉出图像时,应该依次执行以下几个步骤:
Docker拖拽Docker .art.local/nginx
1.Docker检查清单。文件的Json:
3182 | 20180523095420 | | 127.0.0.1请求管理| | |/ api /码头工人/码头工人/ v2 / nginx /表现/最新HTTP / 1.0 | 200 | 948 |
2.客户端使用清单文件中的信息来拉出组成图像的图像层:
20180523095420 | | 41 |请求127.0.0.1管理| | | / api /码头工人/码头工人/ v2 / nginx /团/ sha256: ae513a47849c895a155ddfb868d6ba247f60240ec8495482eca74c4a2c13a881 HTTP / 1.0 | 200 | 6028 |
2169 | 20180523095423 | | 127.0.0.1请求管理| | | / api /码头工人/码头工人/ v2 / nginx /团/ sha256:4a99993b863683bef1c776732e14d2372f6ed52b48e94783f4a1b58af289db07 HTTP / 1.0 | 200 | 201 |
这就完成了拉。如果一个图层是失踪,容器的舱单应该被检查,所有层请求应该返回一个200好了。

Docker推送Docker .art.local/ubuntu

当用户准备好一个图像,在文件上传之前要进行几次检查:

Docker推送Docker .art.local/ubuntu

1.Docker客户端将检查是否存在需要推送的层:

65 | 20180523114900 | | 127.0.0.1请求管理| | |头/ api /码头工人、码头工人、v2 / ubuntu /团/ sha256:471db38bcfbf0f5bac78012b9d458dfd37309d5cbb99d4e95310321a60a0cfdf HTTP / 1.0 | |404| 0
一个404未找到如果这个层在Artifactory中还不存在,那么在这个阶段应该是预期的。

2.客户端运行帖子命令提交blob元数据。

20180523114900 | | 22日请求管理| | 127.0.0.1 | POST | / api /码头工人/码头工人/ v2 / ubuntu /团/上传/ HTTP / 1.0 | 202 | 0 |
3.客户会补丁将剩下的blob元数据交给Artifactory:
请求60 20180523114900 | | | 127.0.0.1 |管理| |补丁/ api /码头工人/码头工人/ v2 / ubuntu /团/上传/ 5582 de7a - 3127 - 48 - d9 bcb5 d61734f14e36 HTTP / 1.0 | 202 | 0 |
4.最后客户端发送层二进制:
122 | 20180523114900 | | 127.0.0.1请求管理| |把| / api /码头工人/码头工人/ v2 / ubuntu /团/上传/ 5582 de7a - 3127 - 48 - d9 bcb5 d61734f14e36 HTTP / 1.0 | 201 | 0 |
5.Artifactory将二进制文件从临时_uploads文件夹到Docker镜像在存储库的基本目录的主要位置:

用户添加图片"src=