- Docker Registry の導入方法と設定のサンプル
# 削除するためには REGISTRY_STORAGE_DELETE_ENABLED=true が必要
$ docker run -d -p 5000:5000 --name registry -e REGISTRY_STORAGE_DELETE_ENABLED=true registry:2
# 適当なイメージ (ここでは alpine:latest) を Docker Hub から pull する
$ docker pull alpine:latest
# タグを付けて push する
$ docker tag alpine:latest localhost:5000/alpine:latest
$ docker push localhost:5000/alpine:latest
# リポジトリ一覧を取得する
$ curl -X GET http://localhost:5000/v2/_catalog
{"repositories":["alpine"]}
# 指定したリポジトリのタグ一覧を取得する
$ curl -X GET http://localhost:5000/v2/alpine/tags/list
{"name":"alpine","tags":["latest"]}
# 指定したイメージのダイジェストを取得する
# レスポンスヘッダ Docker-Content-Digest の値がダイジェスト
$ curl -X GET -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -s -D - http://localhost:5000/v2/alpine/manifests/latest | grep Docker-Content-Digest:
Docker-Content-Digest: sha256:d05ecd4520cab5d9e5d877595fb0532aadcd6c90f4bbc837bc11679f704c4c82
# イメージを削除する
# 202 Accepted が返ってくればOK
$ curl -X DELETE -D - http://localhost:5000/v2/alpine/manifests/sha256:d05ecd4520cab5d9e5d877595fb0532aadcd6c90f4bbc837bc11679f704c4c82
# registryコンテナでGC(Garbage collection)を起動させる
$ docker exec registry sh -c "/bin/registry garbage-collect /etc/docker/registry/config.yml"
-
registryコンテナに入って削除するしかなさそう
$ docker exec -it registry sh $ rm -rf /var/lib/registry/docker/registry/v2/repositories/alpine/
-
1つずつ取るしかなさそう...
$ curl -s -X GET "http://localhost:5000/v2/alpine/manifests/latest" | jq -r '.history[].v1Compatibility' | jq -r '.created' | sort | tail -n 1
- Docker Registry | Docker Documentation
- Delete repository with v2 REST API? (when images, tags are removed and even GC has run) · Issue #1108 · docker/docker-registry
- GoでDockerPrivateRegistryのイメージを削除したい - Qiita
- How to find the creation date of an image in a (private) Docker registry (API v2)? - Stack Overflow