(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Docker】プライベートレジストリを最小限の設定で利用する

スポンサーリンク

はじめに

ローカル環境にコンテナ用のプライベートレジストリを立てて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をホスト上のファイルシステムにマウントしたりパスワード認証を追加したりしますが、最小限でコンテナを起動して動作検証を行ってみました。

以上、ご参考になれば幸いです。