あくまで個人で利用するレジストリのため、http 接続で認証をかけないサクっと構築&利用できる手順となります。
レジストリを構築
すでに Docker Hub 上にレジストリ用のイメージが用意されているため、とても簡単に構築することができます。docker run -d -p 5000:5000 -v /var/docker/data:/var/lib/registry registry
以上で構築完了です!
動作確認
構築したプライベートレジストリにイメージが登録できるか確認してみます。まずはプライベートレジストリに上げるためのイメージにタグをつけます。
今回は軽量な alpine イメージをそのまま利用します。docker pull alpine
docker tag alpine localhost:5000/kmor1/alpine:latest
# docker tag {タグ付けするイメージ名} {push 先のレジストリの ip or host}:{port}/{リポジトリ名}/{イメージ名}:{タグ名}
次に構築したプライベートレジストリに push します。
docker push localhost:5000:kmor1/alpine
プライベートレジストリに push したイメージを pull してみます。
プライベートレジストリからイメージが pull できることを確認するため、いったんローカルのイメージを削除します。docker rmi localhost:5000/kmor1/alpine
docker image
プライベートレジストリから pull します。
docker pull localhost:5000/kmor1/alpine
docker images
無事プライベートレジストリからイメージを取得することができました。
別のサーバから pull できるようにする手順
今回は http でつなぐように構築したため、ローカルホスト以外からプライベートレジストリにつなごうとすると警告が出てしまいます。docker pull 192.168.200.16:5000/kmor1/alpine
これを回避するため、接続元のサーバの Docker の設定( /etc/docker/daemon.json )に以下を追記します。
{"insecure-registries":["192.168.200.16:5000"]}
# {"insecure-registries":["{プライベートレジストリのip}:{port}"]}
service docker restart
これで取得できるようになりました。
docker pull 192.168.200.16:5000/kmor1/alpine