The culprit in the push is that the Docker payload/content is being sent with a PUT request similar to the docker client < 1.8 versions. Modern docker client version, actually use the PATCH method for BLOB uploads
Steps to reproduce:
ctr images tag 192.168.56.1:8080/docker/alpine:latest 192.168.56.1:8080/docker/alpine:1.1 192.168.56.1:8080/docker/alpine:1.1 ctr images push 192.168.56.1:8080/docker/alpine:latest 192.168.56.1:8080/docker/alpine:1.1 index-sha256:c19173c5ada610a5989151111163d28a67368362762534d8a8121ce95cf2bd5a: waiting |--------------------------------------| elapsed: 0.1 s total: 0.0 B (0.0 B/s) ctr: content digest sha256:29a82d50bdb8dd7814009852c1773fb9bb300d2f655bd1cd9e764e7bb1412be3: not found
Capturing the HTTP traffic with wireshark shows that apparently the ctr client fails on on the below set of requests and responses (scroll down to see the last response which actually fails the client):
HEAD /v2/docker/mysql/blobs/sha256:27a27ac83f745b34745a1e0c6d8518c675004ec63ac8dd72ace0a2be583f33bb HTTP/1.1 Host: 192.168.56.1:8080 User-Agent: containerd/v1.3.0-rc.2 Accept: application/vnd.docker.image.rootfs.diff.tar.gzip, * Authorization: Bearer AKCp5e2qZwZhP88EhaTs65CgijmJvohVo98cpaysF9nf3x634jqteKpX5Y6qhj6yViKxX1utn HTTP/1.1 404 Server: Artifactory/development X-Artifactory-Id: 9fb42902b7afcfa0:4d7b3f92:16e305ed8fe:-8000 Docker-Distribution-Api-Version: registry/2.0 Content-Type: application/json Content-Length: 157 Date: Sun, 03 Nov 2019 09:41:07 GMT PUT /v2/docker-local/mysql/blobs/uploads/bdce582b-8fb3-47fc-98cf-6556fb324ebe?digest=sha256%3Ac8ee894bd2bd30f1c5758baf1c4cf2bd49ff7161b29ae404a8562b523fc3f642 HTTP/1.1 Host: 192.168.56.1:8080 User-Agent: containerd/v1.3.0-rc.2 Content-Length: 7019 Authorization: Bearer AKCp5e2qZwZhP88EhaTs65CgijmJvohVo98cpaysF9nf3x634jqteKpX5Y6qhj6yViKxX1utn Accept-Encoding: gzip HTTP/1.1 404 Server: Artifactory/development X-Artifactory-Id: 9fb42902b7afcfa0:4d7b3f92:16e305ed8fe:-8000 Docker-Distribution-Api-Version: registry/2.0 Content-Type: application/json Content-Length: 157 Date: Sun, 03 Nov 2019 09:41:07 GMT {"errors":[{"code":"BLOB_UNKNOWN","message":"blob unknown to registry","detail":{"blobSum":"sha256:c8ee894bd2bd30f1c5758baf1c4cf2bd49ff7161b29ae404a8562b523f
- There is a case that apparently can work if the version manifest already exists
- is duplicated by
-
RTFACT-19344 Support monolithic upload for the img client (using Docker API)
- Done
- relates to
-
RTFACT-7920 Breaking changes in Docker engine 1.8
- Done
-
RTFACT-20170 Artifactory Docker repo breaks with containerd 1.3.0-rc2
- Done
-
RTFACT-8418 Docker should not rely on Content-Length to determine client version
- Done