我正在尝试使用 HTTP API 将图像上传到我的私人 docker 注册表,不幸的是没有成功。
显然我还没有理解上传过程,想问是否有人可以详细解释这一点或将我推向正确的方向。
到目前为止,我已经尝试使用curl进行以下操作。为了进行实验,我仅使用空的高山图像。为此,我将其下载到我的工作站docker pull alpine,然后使用创建 tar 存档docker save -o alpine.tar alpine
然后我将此存档解压到 alpine 目录中。内容如下:
ls -R alpine
alpine:
39cb81dcd06e3d4e2b813f56b72da567696fa9a59b652bd477615b31af969239
e7d92cdc71feacf90708cb59182d0df1b911f8ae022d29e8e95d75ca6a99776a.json
manifest.json
alpine/39cb81dcd06e3d4e2b813f56b72da567696fa9a59b652bd477615b31af969239:
json
layer.tar
VERSION
Run Code Online (Sandbox Code Playgroud)
根据文档,我应该首先通过向 /v2//blobs/uploads/ URL 发送 POST 来启动上传,为此我执行以下命令:
curl -X POST -L -D headers $DOCKER_HOST/v2/alpine/blobs/uploads
答案如下:
cat headers
HTTP/1.1 301 Moved Permanently
Docker distribution api version: registry/2.0
location: /v2/alpine/blobs/uploads/
Date: Tu, 21 Jan 2020 12:42:55 GMT
content length: 0
HTTP/1.1 202 Accepted
content length: 0
Docker distribution api version: …Run Code Online (Sandbox Code Playgroud)