2018年11月25日日曜日

個人で使う Docker のプライベートレジストリをサクっと構築する手順
はてなブックマーク - 個人で使う Docker のプライベートレジストリをサクっと構築する手順 このエントリーをはてなブックマークに追加

作成した個人で使うイメージを管理するためのプライベートリポジトリを構築します。
あくまで個人で利用するレジストリのため、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