0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【docker】docker-registryを導入する ~初期設定編~

Last updated at Posted at 2021-05-09

業務でdocker-registryを導入する機会があり、復習のため再度デプロイします。
環境はAWS/EC2を使用しました。

docker-registryとは何か

コンテナイメージを格納する場所です。docker-registry自体もコンテナイメージとして提供されています。

環境

ec2_docker-registry.png

【クライアント】

$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
$ docker --version
Docker version 20.10.3, build 48d30b5

【サーバ】

$ uname -a
Linux ip-192-168-100-209.ap-northeast-1.compute.internal 4.14.231-173.360.amzn2.x86_64 #1 SMP Mon Apr 19 23:20:22 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ docker --version
Docker version 20.10.4, build d3cb89e

ドキュメントによるとdocker-registryが稼働するホストのdockerバージョンは1.6.0以上が望ましいと記載があります。試す場合はdockerのバージョンをあらかじめ確認しましょう。

やりたいこと

  1. docker-registryのデプロイ
  2. docker-registryにパスワードを設定する
  3. docker-registryのアクセスログを出力する
  4. データの永続化を行う

1. docker-registryのデプロイ

イメージのpull

使用するのはdocker公式に記載のあるregistryです。cliだと以下で確認できます
【サーバ作業】

$ docker search registry --filter is-official=true --no-trunc
NAME       DESCRIPTION                                                                         STARS     OFFICIAL   AUTOMATED
registry   The Docker Registry 2.0 implementation for storing and distributing Docker images   3274      [OK]

# --filter is-official=trueで公式イメージのみを出力
# --no-truncで出力を省略しない

デプロイ

以下でデプロイします。registryが使用するポートは5000であるため、忘れずに指定します。

$ docker run -d -p 5000:5000 --name registry registry:2
...
Status: Downloaded newer image for registry:2
9c35e33e6b6cf5035731c2172b0b0ecfcd20e1ac17c5e598675f7fcaaedba035

# -d デタッチ。バックグラウンドで動作させる

最後にイメージIDが出てきたら成功です。確認してみましょう。

$ docker images registry:2
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
registry     2         1fd8e1b0bb7e   2 weeks ago   26.2MB

$ docker container ps --no-trunc
CONTAINER ID                                                       IMAGE        COMMAND                                            CREATED         STATUS         PORTS                    NAMES
9c35e33e6b6cf5035731c2172b0b0ecfcd20e1ac17c5e598675f7fcaaedba035   registry:2   "/entrypoint.sh /etc/docker/registry/config.yml"   2 minutes ago   Up 2 minutes   0.0.0.0:5000->5000/tcp   registry

先ほどのログと同じImageIDが出てきました。問題なさそうです。

nginxコンテナをデプロイ

問題なくpush,pullできるかを確認するため、例としてnginx公式イメージからコンテナをたてます。

【クライアント作業】

### イメージ確認
$ docker search nginx --filter is-official=true
NAME      DESCRIPTION                STARS     OFFICIAL   AUTOMATED
nginx     Official build of Nginx.   14814     [OK]

### nginxコンテナをデプロイ
$ docker run -i -d -p 8080:80 --name test-nginx nginx:latest
Status: Downloaded newer image for nginx:latest
21e118a574751848dd2b2c1a28d20852d5348004c9909b5539a8cb32f1d7d9e0

### 確認
$ docker container ps --no-trunc | grep nginx
21e118a574751848dd2b2c1a28d20852d5348004c9909b5539a8cb32f1d7d9e0   nginx:latest   "/docker-entrypoint.sh nginx -g 'daemon off;'"   About a minute ago   Up About a minute   0.0.0.0:8080->80/tcp   test-nginx

$ docker images nginx:latest
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    62d49f9bab67   3 weeks ago   133MB

### 疎通確認
$ curl localhost:8080 -I
HTTP/1.1 200 OK
Server: nginx/1.19.10
Date: Wed, 05 May 2021 06:02:33 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 13 Apr 2021 15:13:59 GMT
Connection: keep-alive
ETag: "6075b537-264"
Accept-Ranges: bytes

問題なさそうですね。このイメージをpushしてみます。デプロイしたコンテナはイメージ削除をするため削除しましょう

$ docker rm -f test-nginx
test-nginx

registryへのpush,pull

テスト用と識別するためにタグを付けます。
タグのフォーマットは以下となりますので、環境に合わせて名づけましょう。今回はホスト名にEC2のpublic DNSをつけています

### リポジトリで管理する場合
<ホスト名>:<ポート番号>/<リポジトリ>/<イメージ名>:<タグ>

### リポジトリで管理しない場合
<ホスト名>:<ポート番号>/<イメージ名>:<タグ>

フォーマットにしたがってタグを付けます

$ docker image tag nginx ec2-52-197-137-171.ap-northeast-1.compute.amazonaws.com:5000/nginx:test

$ docker images | grep nginx
nginx                                                                latest      62d49f9bab67   3 weeks ago    133MB
ec2-52-197-137-171.ap-northeast-1.compute.amazonaws.com:5000/nginx   test        62d49f9bab67   3 weeks ago    133MB

pushします

$ docker push ec2-52-197-137-171.ap-northeast-1.compute.amazonaws.com:5000/nginx:test
The push refers to repository [ec2-52-197-137-171.ap-northeast-1.compute.amazonaws.com:5000/nginx]
Get https://ec2-52-197-137-171.ap-northeast-1.compute.amazonaws.com:5000/v2/: http: server gave HTTP response to HTTPS client

エラーになりました。
https接続しなければ行けないところでhttp接続をしていたためにエラーが出た様です。
証明書を作成する必要があるのですが、今回はhttpで接続できるようにします。
httpsで接続する方法は別の機会に投稿したいと思っています。

クライアントにdaemon.jsonを追加

ドキュメントに記載の方法で行います。安全な方法ではないためご承知おきください。pull,pushするサーバで以下を実施します。

$ vi /etc/docker/daemon.json
$ cat /etc/docker/daemon.json
{
  "insecure-registries" : ["ec2-52-197-137-171.ap-northeast-1.compute.amazonaws.com:5000"]
}

### 反映のため、サービス再起動
$ sudo systemctl restart docker

再度pushします

$ docker push ec2-52-197-137-171.ap-northeast-1.compute.amazonaws.com:5000/nginx:test
The push refers to repository [ec2-52-197-137-171.ap-northeast-1.compute.amazonaws.com:5000/nginx]
64ee8c6d0de0: Layer already exists
974e9faf62f1: Layer already exists
15aac1be5f02: Layer already exists
23c959acc3d0: Layer already exists
4dc529e519c4: Layer already exists
7e718b9c0c8c: Layer already exists
test: digest: sha256:42bba58a1c5a6e2039af02302ba06ee66c446e9547cbfb0da33f4267638cdb53 size: 1570

できました!
手元のイメージを削除し、↑でpushしたイメージが使用できるか試しましょう

$ docker rmi nginx:latest
$ docker rmi ec2-52-197-137-171.ap-northeast-1.compute.amazonaws.com:5000/nginx:test
$ docker images | grep nginx
$

### imageのpull
$ docker pull ec2-52-197-137-171.ap-northeast-1.compute.amazonaws.com:5000/nginx:test
test: Pulling from nginx
f7ec5a41d630: Pull complete
aa1efa14b3bf: Pull complete
b78b95af9b17: Pull complete
c7d6bca2b8dc: Pull complete
cf16cd8e71e0: Pull complete
0241c68333ef: Pull complete
Digest: sha256:42bba58a1c5a6e2039af02302ba06ee66c446e9547cbfb0da33f4267638cdb53
Status: Downloaded newer image for ec2-52-197-137-171.ap-northeast-1.com

### nginxコンテナの起動、確認
$ docker run -i -d -p 8080:80 --name test-nginx-again ec2-52-197-137-171.ap-northeast-1.compute.amazonaws.com:5000/nginx:test
af5f53d7387c66d0dc42e05b2231c03cbf0dd599b2f91ddd2dc769d3770c0180
$ curl localhost:8080 -I
HTTP/1.1 200 OK
Server: nginx/1.19.10
Date: Wed, 05 May 2021 06:33:06 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 13 Apr 2021 15:13:59 GMT
Connection: keep-alive
ETag: "6075b537-264"
Accept-Ranges: bytes

無事pushできました!

2. docker-registryにパスワードを設定する

デフォルトではdocker-registryにパスワードは設定されていませんが、以下の方法で設定可能です。今回はhtpasswdを利用します

  • silly
  • token
  • htpasswd

またこういった設定をregistryに対して行うには以下の2つがあげられます

  • 公式イメージに環境変数を設定する
  • 設定ファイルを適用させる

今回は後者を使いたいと思います。

設定ファイルを作る

設定ファイルを作り、docker-registryに適用させます。ドキュメントの例から必要そうな設定をコピペしました。
【サーバ作業】
※ EC2を停止したためpublic DNSが変わっていますが、同環境です。

config.yml
version: 0.1
auth:
  htpasswd:
    realm: basic-realm
    path: /auth/htpasswd

htpasswdファイルが必要なため、ホスト側で作成してコンテナと共有するようにします

$ htpasswd -c -b -B test.htpasswd test test
Adding password for user test

# -c 新規htpasswdファイル作成
# -b コマンドラインからのパスワードを受け取る
# -B bcrypt方式を使う。bcryptはハッシュパスワード生成方式の一つ

では立ち上げてみましょう

新しいregistryをデプロイ

重複を避けるため、ホストの5001番ポートを使用します

### 立ち上げ
docker run -d -p 5001:5000 --restart=always --name registry-htpasswd \
             -v `pwd`/config.yml:/etc/docker/registry/config.yml \
             -v `pwd`/test.htpasswd:/auth/htpasswd \
             registry:2
afe3cad9f424352ba4768aab734f989cabf148b66e887eda2d076a5d8e319968

### 確認
$ docker ps
CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS                          PORTS                    NAMES
afe3cad9f424   registry:2   "/entrypoint.sh /etc…"   46 seconds ago   Restarting (1) 14 seconds ago                            registry-htpasswd
9c35e33e6b6c   registry:2   "/entrypoint.sh /etc…"   7 hours ago      Up 41 minutes                   0.0.0.0:5000->5000/tcp   registry

Restartingが出力されました。しばらく待ってもrunningとならないため、調査を実施します。

コンテナのログを見てみる

docker logsコマンドで見てみましょう

$ docker logs registry-htpasswd
configuration error: error parsing /etc/docker/registry/config.yml: No storage configuration provided

Usage:
  registry serve <config> [flags]
Flags:
  -h, --help=false: help for serve


Additional help topics:

configuration error: error parsing /etc/docker/registry/config.yml: No storage configuration provided

Usage:
  registry serve <config> [flags]
Flags:
  -h, --help=false: help for serve


Additional help topics:

configuration error: error parsing /etc/docker/registry/config.yml: No storage configuration provided

Usage:
  registry serve <config> [flags]
Flags:
  -h, --help=false: help for serve
...
# あとはこれの繰り返し

config.ymlのstorage設定が足りていない様です。さらにあたりを付けるために、最初にデプロイしたregistryのconfig.ymlを見てみます

config.ymlを見てみる

### 対象確認
$ docker ps
CONTAINER ID   IMAGE        COMMAND                  CREATED         STATUS                          PORTS                    NAMES
afe3cad9f424   registry:2   "/entrypoint.sh /etc…"   7 minutes ago   Restarting (1) 26 seconds ago                            registry-htpasswd
9c35e33e6b6c   registry:2   "/entrypoint.sh /etc…"   7 hours ago     Up 48 minutes                   0.0.0.0:5000->5000/tcp   registry

### registryの中に入る
$ docker exec -it registry sh
/ #

### config.ymlを見る
/ # cat /etc/docker/registry/config.yml
version: 0.1
log:
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3

### 抜ける
/ # exit

こちらにもstorage設定がありました。いろいろ設定がありますが、ひとまずstorage設定を入れてみます。

再度設定ファイルを作成する

config.yml
version: 0.1
storage:
  cache: # ディスクキャッシュの格納場所。コンテナのメモリ領域を使用する。
    blobdescriptor: inmemory
  filesystem: # ローカルのファイルシステムを使用
    rootdirectory: /var/lib/registry # /var/lib/registryにコンテナイメージを格納
auth:
  htpasswd:
    realm: basic-realm
    path: /auth/htpasswd

再デプロイ

再びデプロイしてみます

### restarting状態のコンテナ削除
$ docker rm -f registry-htpasswd
registry-htpasswd

### デプロイ
$ docker run -d -p 5001:5000 --restart=always --name registry-htpasswd \
>              -v `pwd`/config.yml:/etc/docker/registry/config.yml \
>              -v `pwd`/test.htpasswd:/auth/htpasswd \
>              registry:2
2d1b34cc45c484aab15ac2abff4f75c16d3d4bc42c8ec25fc2aa39272da30a43

### 確認
$ docker ps
CONTAINER ID   IMAGE        COMMAND                  CREATED         STATUS             PORTS                    NAMES
2d1b34cc45c4   registry:2   "/entrypoint.sh /etc…"   3 seconds ago   Up 2 seconds       0.0.0.0:5001->5000/tcp   registry-htpasswd
9c35e33e6b6c   registry:2   "/entrypoint.sh /etc…"   7 hours ago     Up About an hour   0.0.0.0:5000->5000/tcp   registry

今度はうまく行ってそうです。ログイン、push,pullを試してみましょう。

認証の確認をする

まずパスワードを使用しないパターンを試します
【クライアント作業】

### 5001番ポートもhttp通信を許可する
$ sudo vi /etc/docker/daemon.json
$ cat /etc/docker/daemon.json
{
  "insecure-registries" : [
    "ec2-3-113-20-153.ap-northeast-1.compute.amazonaws.com:5000",
    "ec2-3-113-20-153.ap-northeast-1.compute.amazonaws.com:5001"
  ]
}
$ sudo systemctl restart docker

### タグを5001番ポートに変更
$ docker image tag ec2-52-197-137-171.ap-northeast-1.compute.amazonaws.com:5000/nginx:test ec2-3-113-20-153.ap-northeast-1.compute.amazonaws.com:5001/nginx:test

### ログイン
$ docker login ec2-3-113-20-153.ap-northeast-1.compute.amazonaws.com:5001
Username: test
Password:
Error response from daemon: Get http://ec2-3-113-20-153.ap-northeast-1.compute.amazonaws.com:5001/v2/: dial tcp 3.113.20.153:5001: connect: connection refused

どういうわけか失敗。また調査をします。

Registry APIを通して疎通確認をする

docker-registryはhttpメソッドを使って情報を取得できます(ここ)。GETでレジストリ一覧を確認し、疎通確認をしてみます。

### 5000番ポートのregistryの場合
$ curl http://ec2-3-113-20-153.ap-northeast-1.compute.amazonaws.com:5000/v2/_catalog
{"repositories":["nginx"]}

### 5001番ポートのregistryの場合
$ curl http://ec2-3-113-20-153.ap-northeast-1.compute.amazonaws.com:5001/v2/_catalog
curl: (7) Failed connect to ec2-3-113-20-153.ap-northeast-1.compute.amazonaws.com:5001; 接続を拒否されました

5000番の方はAPIと通信可能なため、daemonファイルは間違っていなさそうです。それではconfig.ymlに足りない内容があるのでしょうか

config.ymlを編集

ドキュメントを確認したところ、httpオプションのaddrパラメータは設定が必須であったため、追記します。
【サーバ作業】

config.yml
version: 0.1
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000 # 5000番でコネクションを受け付ける
auth:
  htpasswd:
    realm: basic-realm
    path: /auth/htpasswd

接続

再度接続してみます。
【クライアント作業】

$ docker login ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5001
Username: test
Password:
....
Login Succeeded

うまくいきました。pushしてみます

$ push ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5001/alpine:test
The push refers to repository [ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5001/alpine]
b2d5eeeaba3a: Pushed
test: digest: sha256:def822f9851ca422481ec6fee59a9966f12b351c62ccb9aca841526ffaa9f748 size: 528

問題なくできました!
ちなみに認証情報は~/.docker/config.jsonにdocker login時に保存されています。その認証情報を消してpullすると以下の様に失敗します。

$ cat ~/.docker/config.json
{
        "auths": {
                "ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5001": {
                        "auth": "dGVzdDp0ZXN0"
                }
        }
}
$ rm -f ~/.docker/config.json
$ docker pull ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5001/alpine:test
Error response from daemon: Head http://ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5001/v2/alpine/manifests/test: no basic auth credentials

ログインする前に上記のファイルを用意しておくとdocker loginを省略できます。

3. docker-registryのアクセスログを出力する

開発、運用ではログ確認は必須なので出力方法を確認します。先ほどのconfig.ymlに適用します。
【サーバ作業】

config.yml
version: 0.1
log:
  accesslog:
    disabled: false # アクセスログを有効にするか。falseで有効にする
  level: warn # ログレベル。error,warn,info,debugより選択
  formatter: text # 出力方式。text,json,logstashより選択
  fields:
    environment: test # ログにこのkey:valueが記載される
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
auth:
  htpasswd:
    realm: basic-realm
    path: /auth/htpasswd

それでは同じくコンテナを起動します。5002番ポートに新しく立ち上げました。

$ docker run -d -p 5002:5000 --restart=always --name registry-accesslog \
>              -v `pwd`/config.yml:/etc/docker/registry/config.yml \
>              -v `pwd`/test.htpasswd:/auth/htpasswd \
>              registry:2
da913907d63db081a4187e82eef2aaca50fe4064bbcb513792979f2e1aea76ff

$ docker ps | grep  5002
da913907d63d   registry:2   "/entrypoint.sh /etc…"   9 seconds ago   Up 8 seconds   0.0.0.0:5002->5000/tcp   registry-accesslog

ログインからのpushでアクセスログを確かめてみましょう
【クライアント作業】

$ docker login ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5002
Username: test
Password:
...
Login Succeeded

$ docker push ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5002/alpine:test
The push refers to repository [ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5002/alpine]
b2d5eeeaba3a: Pushed
test: digest: sha256:def822f9851ca422481ec6fee59a9966f12b351c62ccb9aca841526ffaa9f748 size: 528

ドキュメントによるとアクセスログは標準出力に出るそうです。pushした時のログをdocker logsで見てみましょう
【サーバ作業】

$ docker logs registry-accesslog
...
time="2021-05-08T13:42:54.239202664Z" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable." environment=test go.version=go1.11.2 instance.id=024cd523-5f2b-4808-9437-d0cbe5a6d11a version=v2.7.1
...
xxx.xxx.xxx.xxx - - [08/May/2021:13:45:55 +0000] "GET /v2/ HTTP/1.1" 401 87 "" "docker/20.10.3 go/go1.13.15 git-commit/46229ca kernel/3.10.0-1160.15.2.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/20.10.3 \\(linux\\))"

いろいろ省略していますが、最初の例ではenvironment:testが表示され、二つ目の例ではアクセスログが出力されています。

4. データの永続化を行う

イメージのpushを行いましたが、コンテナを削除するとそのデータは消えてしまいます。データを残すためにはコンテナとホストでデータ(ディレクトリ)を共有する必要があります。
docker runを行うタイミングでディレクトリ共有してみます。  
【サーバ作業】

$ docker run -d -p 5003:5000 --restart=always --name registry-volume \
>              -v `pwd`/config.yml:/etc/docker/registry/config.yml \
>              -v `pwd`/test.htpasswd:/auth/htpasswd \
>              -v `pwd`/data:/var/lib/registry \
>              registry:2
aaacfe335903929d783c5003ec554b4e351f362df67760a8b29c6b11d0a5b46a

ここにイメージをpushします。
【クライアント作業】

$ docker login ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5003
Login Succeeded
$ docker push ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5003/alpine:test
The push refers to repository [ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5003/alpine]
b2d5eeeaba3a: Pushed
$ curl -u test:test http://ec2-54-250-153-222.ap-northeas
t-1.compute.amazonaws.com:5003/v2/_catalog
{"repositories":["alpine"]}

問題なくpushできました。dataディレクトリも共有されています

$ ll
total 8
-rw-rw-r-- 1 ec2-user ec2-user 299 May  8 13:35 config.yml
drwxrwxr-x 3 ec2-user ec2-user  20 May  8 14:13 data
-rw-rw-r-- 1 ec2-user ec2-user  66 May  5 09:18 test.htpasswd
$ tree data/
data/
mqq docker
    mqq registry
        mqq v2
            tqq blobs
            x?? mqq sha256
            x??     tqq 54
            x??     x?? mqq 540db60ca9383eac9e418f78490994d0af424aab7bf6d0e47ac8ed4e2e9bcbba
            x??     x??     mqq data
            x??     tqq 6d
            x??     x?? mqq 6dbb9cc54074106d46d4ccb330f2a40a682d49dda5f4844962b7dce9fe44aaec
            x??     x??     mqq data
            x??     mqq de
            x??         mqq def822f9851ca422481ec6fee59a9966f12b351c62ccb9aca841526ffaa9f748
            x??             mqq data
            mqq repositories
                mqq alpine
                    tqq _layers
                    x?? mqq sha256
                    x??     tqq 540db60ca9383eac9e418f78490994d0af424aab7bf6d0e47ac8ed4e2e9bcbba
                    x??     x?? mqq link
                    x??     mqq 6dbb9cc54074106d46d4ccb330f2a40a682d49dda5f4844962b7dce9fe44aaec
                    x??         mqq link
                    tqq _manifests
                    x?? tqq revisions
                    x?? x?? mqq sha256
                    x?? x??     mqq def822f9851ca422481ec6fee59a9966f12b351c62ccb9aca841526ffaa9f748
                    x?? x??         mqq link
                    x?? mqq tags
                    x??     mqq test
                    x??         tqq current
                    x??         x?? mqq link
                    x??         mqq index
                    x??             mqq sha256
                    x??                 mqq def822f9851ca422481ec6fee59a9966f12b351c62ccb9aca841526ffaa9f748
                    x??                     mqq link
                    mqq _uploads

28 directories, 8 files

一度コンテナを削除し、pullできるか確認してみます。イメージは削除済みです。
【サーバ作業】

$ docker rm -f registry-volume
$ docker run -d -p 5003:5000 --restart=always --name registry-volume \
             -v `pwd`/config.yml:/etc/docker/registry/config.yml \
             -v `pwd`/test.htpasswd:/auth/htpasswd \
	         -v `pwd`/data:/var/lib/registry \
             registry:2

【クライアント作業】

### リポジトリの有無を確認
$ curl -u test:test http://ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5003/v2/_catalog

### 再度pullできるか確認
$ docker pull ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5003/alpine:test
test: Pulling from alpine
540db60ca938: Already exists
Digest: sha256:def822f9851ca422481ec6fee59a9966f12b351c62ccb9aca841526ffaa9f748
Status: Downloaded newer image for ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5003/alpine:test
ec2-54-250-153-222.ap-northeast-1.compute.amazonaws.com:5003/alpine:test

問題なくできました。コンテナのデータを残しておくために、必要なデータはホストや外部サーバと共有しましょう

最後に

パスワード認証が必要なdocker-registryを導入できました。
次はhttps接続できるようにしたいと思います。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?