目的
k8sで自作のアプリケーションをコンテナレジストリからデプロイして動かしたい。
だが、DockerHubとかは使用せずにローカルで起動しているプライベートレジストリからコンテナイメージを取得したい。
そのため、プライベートリポジトリを用意したかった。
目標
- プライベートレジストリの構築
- コンテナイメージの登録
プライベートレジストリの構築
Dockerの公式ページでもregistryが紹介されているので、それを使用すればプライベートレジストリを使用可能。
docker run -d -p 5000:5000 --name registry registry:2
コンテナイメージの登録
Dockerfileが用意されている前提とする。
Dockerfileがあるディレクトリで docker image build
を実行。
リポジトリ名はsample/tomsanとする。
$ docker image build -t sample/tomsan:latest .
コンテナイメージが作成できたことを確認。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE sample/tomsan latest ca40ff258ba4 About a minute ago 685MB
docker image tag
を実行し、タグを付ける。
$ docker image tag sample/tomsan:latest localhost:5000/sample/tomsan:1.0
docker image push
を実行し、コンテナイメージをプライベートレジストリに登録。
$ docker image push localhost:5000/sample/tomsan:1.0
プライベートレジストリにコンテナイメージが登録できたことを確認する。 curlコマンドでプライベートレジストリに対してGETリクエストを行い、レスポンスに登録したものが含まれていればOK。
$ curl http://localhost:5000/v2/_catalog {"repositories":["sample/tomsan"]}
プライベートレジストリからコンテナイメージを取得
pullしてくる前に作成したイメージは削除しておく。
$ docker image rm localhost:5000/sample/tomsan:1.0
コンテナイメージをpullしてくる。
取得したコンテナイメージが動作していればOK。
$ docker pull localhost:5000/sample/tomsan:1.0 $ docker run -d --name tomsan -p 8080:8080 localhost:5000/sample/tomsan:1.0 $ docker ps
最後に
プライベートレジストリを構築するのに時間や手間がかかると思っていたが、すでにコンテナイメージが公開されており、サクッとできた。
次はk8sにデプロイしてみる。