はじめに
ローカル環境にコンテナ用のプライベートレジストリを立ててPush操作の検証を行った際の動作確認メモを記しておきます。
尚、環境としてはdockerインストール済のLinux仮想マシンの上でレジストリを起動しました。
環境情報
- RedHat Enterprise Linux Server 7.5
- Docker Version:18.09
- registry : 2d4f4b5309b1
プライベートレジストリを起動
DockerRegistryのイメージを取得し
$ docker pull registry:latest latest: Pulling from library/registry ... docker.io/library/registry:latest
以下で起動できます。
docker run -p 5000:5000 -d --name registrytest -t registry
5000番ポートはレジストリーの待ち受けポートで起動時に読まれる/etc/docker/registry/config.yml
にて管理されています。
プライベートレジストリのコンテナを起動したホスト上で以下のようにエラーが返ってこなければアクセスに成功しています。
# curl localhost:5000 #
起動に失敗していると以下のようにエラーとなります。
# curl localhost:5000 curl: (7) Failed connect to localhost:5000; Connection refused
レジストリへのpushテスト
イメージのタグを変更して
# docker tag XXXX <IP_ADDR>:5000/XXXX
以下で起動したレジストリにpushします。
# docker push <IP_ADDR>:5000/XXXX
ただしデフォルト設定だと以下メッセージにて失敗するので
The push refers to repository[<IP_ADDR>:5000/XXXX] Get https://<IP_ADDR>:5000/v2: https: server gave HTTP respose to HTTPS client
Dockerエンジンがhttpsで繋ぎにいこうとするので/etc/docker/daemon.json
を以下に変更することで
[ "insecure-registries": [ "<IP_ADDR>:5000" ] ]
Pushに成功します。
The push refers to repository[<IP_ADDR>:5000/XXXX] ... latest digest: sha256.... size: 3032
コンテナ内の以下ディレクトリにpushしたイメージ名のファイルができています。
# docker exec -it registrytest ls /var/lib/registry/v2/repositories XXXX
終わりに
ここから/var/lib/registry
をホスト上のファイルシステムにマウントしたりパスワード認証を追加したりしますが、最小限でコンテナを起動して動作検証を行ってみました。
以上、ご参考になれば幸いです。