ヒトリ歩き

愚痴とかいろいろ書きます

プライベートレジストリを使ってみた

目的

k8sで自作のアプリケーションをコンテナレジストリからデプロイして動かしたい。
だが、DockerHubとかは使用せずにローカルで起動しているプライベートレジストリからコンテナイメージを取得したい。
そのため、プライベートリポジトリを用意したかった。

目標

  • プライベートレジストリの構築
  • コンテナイメージの登録

プライベートレジストリの構築

Dockerの公式ページでもregistryが紹介されているので、それを使用すればプライベートレジストリを使用可能。

docker run -d -p 5000:5000 --name registry registry:2

docs.docker.com

コンテナイメージの登録

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にデプロイしてみる。