モチベーション
dockerイメージをgcrからpullするだけなら gcloud docker pull/push
を利用するのが一番手軽で良いと思いますが、稀にgcloudコマンドをインストールせずにdockerコマンドのみある環境で GCR の認証を行いたい場合もあると思います。
そんな人のための記事になります。
追記 : GCRを高速なプライベートリポジトリとして利用できるので、嬉しい人は多いかもしれない。ということでタイトルも変更。
事前準備
- gcloudコマンドインストールした端末を用意する
- gcpのプロジェクトは作成しておく
そのぐらい、gcloudインストールしたくないとはいっても、認証のトークンを取得するためにどこかの端末にインストールし、 gcloud auth login
は済ませて置く必要があります
認証のトークンを取得する
以下のコマンドを実行し、出力されるトークン(割と長めな文字列)をメモしておく。
gcloud auth print-access-token
GCRにdocker loginする
以下のようなコマンドで docker login
する
docker login -u oauth2accesstoken -p {先程のトークン} https://asia.gcr.io
Login Succeeded
と表示されればOK
試しに docker push/pull してみる
Dockerfileを配置し、コンテナをbuildする
Dockerfileは以下のように
FROM alpine
CMD echo "hello! ore-dayo!"
Dockerfileを配置したディレクトリで以下のコマンドでdocker buildを行う
docker build -t asia.gcr.io/{project id}/oreore .
コンテナをdockerコマンドでpushしてみる
以下のコマンドを実行
docker push asia.gcr.io/{project id}/oreore
問題なし。
GCPのコンソールからGCRないにpushしたイメージが見えているはず。
コンテナをdockerコマンドでpullしてみる(runする)
事前にbuildしたイメージは消しておく。
docker rmi {containerのid}
コンテナを実行する
docker run --rm asia.gcr.io/{project id}/oreore
コンテナイメージのpullが完了した後に、 hello! ore-dayo!
と出れば成功。
これで gcloud をインストールしていない環境でも GCR からイメージをpush/pullできそう。
enjoy!