case-kの備忘録

日々の備忘録です。データ分析とか基盤系に興味あります。

Google Container Registryの概要と実践

GKE上にアプリをデプロイさせる上でこれまで作ったアプリのイメージをレジストリに登録します。レジストリにはGCPGoogle Container Registryを使ってみたいと思います。

概要

Container Registry とは

Docker Hubと同じようにDockerイメージを登録するレジストリになります。ユーザのアクセス制限やCI/CDの統合があらかじめされているので、CI/CDのパイプラインの自動化に役立ちます。Container Registryに登録したイメージをGKE上にデプロイするために事前に必要なイメージを登録していければと思います。
cloud.google.com

実践

Container Registry の認証

イメージを Container Registry にpush または pullするための認証を行います。

$ gcloud auth configure-docker

イメージをビルドする

Dockerfileよりイメージをビルドします。

$ docker image build -f Dockerfile-express-kube  -t express-app .
# 動作確認
$ docker container run --name express-app -d -p 8888:3001 express-app

イメージにレジストリ名をタグ付けする

Container Registryに登録するためにイメージにタグ付けを行います。

$ docker tag express-app gcr.io/[project id]/express-app:tag1

イメージを Container Registryにpushする

タグ付けが完了したら次のようにしてpushします。

$ docker push gcr.io/[project id]/express-app:tag1

レジストリに登録できたか確認する

次のようにして登録できたことを確認します。

$ gcloud container images list-tags gcr.io/[project id]/express-app
DIGEST        TAGS  TIMESTAMP
13a7ea547637  tag1  2020-03-02T18:31:48
3be96f71d228        2020-03-02T17:37:13

コンソールでも確認できます。
f:id:casekblog:20200302181012p:plain

イメージを Container Registry から pull する

$ docker pull gcr.io/[project id]/express-app:tag1

イメージを起動

$ docker container run --name express-app-gke -d -p 8887:3001 gcr.io/[project id]/express-app:tag1
8e8634484d982e96708e11aeabac24143100e652fd4112a91500b32dcba3e3c2

このような感じでアプリに必要なイメージを全て登録します。

$ docker image ls
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
express-app                          latest              02624ede8026        20 minutes ago      959MB
react-app                            latest              7e07a729775a        21 minutes ago      1.08GB
nginx-express                        latest              f8f0926b2c94        24 minutes ago      170MB
nginx-react                          latest              f8f0926b2c94        24 minutes ago      170MB
nginx                                latest              a1523e859360        4 days ago          127MB
node                                 latest              e0e011be5f0f        5 days ago          942MB

準備ができたら次にイメージをGKE上にデプロイして行ければと思います。