Skip to content

Instantly share code, notes, and snippets.

@takenoco82
Last active August 13, 2023 05:42
Show Gist options
  • Save takenoco82/b9559a1abd57eb0845a77041860cd26e to your computer and use it in GitHub Desktop.
Save takenoco82/b9559a1abd57eb0845a77041860cd26e to your computer and use it in GitHub Desktop.
Docker Registry の使い方

Docker Registry の使い方

これは何?

  • Docker Registry の導入方法と設定のサンプル

Docker Registry を起動する

# 削除するためには REGISTRY_STORAGE_DELETE_ENABLED=true が必要
$ docker run -d -p 5000:5000 --name registry -e REGISTRY_STORAGE_DELETE_ENABLED=true registry:2

イメージを push する

# 適当なイメージ (ここでは 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
    

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment