У меня есть приватный репозиторий докеров, и я хочу проверить, доступна ли более новая версия изображения докеров или нет. Я попытался:
curl -kvu "myuser:mypasswd" -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X HEAD https://myrepo:5000/v2/myimage/manifests/i386
Я получил ответ вроде этого:
< HTTP/1.1 200 OK
< Content-Length: 9080
< Content-Type: application/vnd.docker.distribution.manifest.v2+json
< Docker-Content-Digest: sha256:5891d3d01fcdb5ec7dc8a27f25360b132510c7b92369ad50926c27ca7d7cfacf
< Docker-Distribution-Api-Version: registry/2.0
< Etag: "sha256:5891d3d01fcdb5ec7dc8a27f25360b132510c7b92369ad50926c27ca7d7cfacf"
< X-Content-Type-Options: nosniff
Какое поле в заголовке ответа должно сравниваться с локальными метаданными изображения?
curl -kvu "myuser:mypasswd" -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X HEAD https://myrepo:5000/v2/myimage/manifests/<tag>
Вернет ответ следующим образом:
< HTTP/1.1 200 OK
< Content-Length: 9080
< Content-Type: application/vnd.docker.distribution.manifest.v2+json
< Docker-Content-Digest: sha256:5891d3d01fcdb5ec7dc8a27f25360b132510c7b92369ad50926c27ca7d7cfacf
< Docker-Distribution-Api-Version: registry/2.0
< Etag: "sha256:5891d3d01fcdb5ec7dc8a27f25360b132510c7b92369ad50926c27ca7d7cfacf"
< X-Content-Type-Options: nosniff
Docker-Content-Digest: поле должно быть проверено на digest локального изображения
docker images --digests myrepo:5000/myimage
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
myrepo:5000/myimage i386 sha256:5891d3d01fcdb5ec7dc8a27f25360b132510c7b92369ad50926c27ca7d7cfacf b9e9c7f4a462 6 days ago 491 MB
docker images --digests myrepo:5000/myimage Должен быть запущен без тега (i386 в этом случае)
Если дайджесты не совпадают, то появляется более новая версия изображения. Таким образом, в основном вы проверяете дайджест удаленного и локального изображения. Если они не совпадают, доступна более новая версия.
curl -kvu "myuser:mypasswd" -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X HEAD https://myrepo:5000/v2/myimage/manifests/<tag>
Вернет ответ следующим образом:
< HTTP/1.1 200 OK
< Content-Length: 9080
< Content-Type: application/vnd.docker.distribution.manifest.v2+json
< Docker-Content-Digest: sha256:5891d3d01fcdb5ec7dc8a27f25360b132510c7b92369ad50926c27ca7d7cfacf
< Docker-Distribution-Api-Version: registry/2.0
< Etag: "sha256:5891d3d01fcdb5ec7dc8a27f25360b132510c7b92369ad50926c27ca7d7cfacf"
< X-Content-Type-Options: nosniff
Docker-Content-Digest: поле должно быть проверено на digest локального изображения
docker images --digests myrepo:5000/myimage
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
myrepo:5000/myimage i386 sha256:5891d3d01fcdb5ec7dc8a27f25360b132510c7b92369ad50926c27ca7d7cfacf b9e9c7f4a462 6 days ago 491 MB
docker images --digests myrepo:5000/myimage Должен быть запущен без тега (i386 в этом случае)
Если дайджесты не совпадают, то появляется более новая версия изображения. Таким образом, в основном вы проверяете дайджест удаленного и локального изображения. Если они не совпадают, доступна более новая версия.
curl -kvu "myuser:mypasswd" -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X HEAD https://myrepo:5000/v2/myimage/manifests/<tag>
Вернет ответ следующим образом:
< HTTP/1.1 200 OK
< Content-Length: 9080
< Content-Type: application/vnd.docker.distribution.manifest.v2+json
< Docker-Content-Digest: sha256:5891d3d01fcdb5ec7dc8a27f25360b132510c7b92369ad50926c27ca7d7cfacf
< Docker-Distribution-Api-Version: registry/2.0
< Etag: "sha256:5891d3d01fcdb5ec7dc8a27f25360b132510c7b92369ad50926c27ca7d7cfacf"
< X-Content-Type-Options: nosniff
Docker-Content-Digest: поле должно быть проверено на digest локального изображения
docker images --digests myrepo:5000/myimage
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
myrepo:5000/myimage i386 sha256:5891d3d01fcdb5ec7dc8a27f25360b132510c7b92369ad50926c27ca7d7cfacf b9e9c7f4a462 6 days ago 491 MB
docker images --digests myrepo:5000/myimage Должен быть запущен без тега (i386 в этом случае)
Если дайджесты не совпадают, то появляется более новая версия изображения. Таким образом, в основном вы проверяете дайджест удаленного и локального изображения. Если они не совпадают, доступна более новая версия.