3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DockerコンテナからGoogle Cloud SDKのコマンドを簡単に実行できるコマンドをつくってみた

Posted at

なるべくDockerを利用して手元の端末を汚さない試み。便利かはわかりません。

使い方

docker-gcloud コマンドはDockerコンテナでgcloud コマンドを実行しています。
認証情報はホストの~/.config/gcloud を参照します。

Cloud Buildにジョブ登録してみます。

# credentials.dbなどがある前提
> ls ~/.config/gcloud/
access_tokens.db   config_sentinel    credentials.db     legacy_credentials
active_config      configurations     gce                logs


> docker-gcloud --version
Google Cloud SDK 267.0.0
bq 2.0.49
core 2019.10.15
gsutil 4.44


> cat <<EOF > cloudbuild.yaml
steps:
- name: 'gcr.io/cloud-builders/git'
  entrypoint: 'bash'
  args: ['-c', 'echo "hoge"']
EOF


> docker-gcloud builds submit \
  --config=cloudbuild.yaml \
  --no-source
Created [https://cloudbuild.googleapis.com/v1/projects/<GCPのProjectID>/builds/16cab9fd-a4b3-4937-a7a3-7838516788d3].
Logs are available at [https://console.cloud.google.com/gcr/builds/16cab9fd-a4b3-4937-a7a3-7838516788d3?project=168605712006].
---------------------------------------------------- REMOTE BUILD OUTPUT ----------------------------------------------------
starting build "16cab9fd-a4b3-4937-a7a3-7838516788d3"

FETCHSOURCE
BUILD
Already have image (with digest): gcr.io/cloud-builders/git
hoge
PUSH
DONE
-----------------------------------------------------------------------------------------------------------------------------

ID                                    CREATE_TIME                DURATION  SOURCE  IMAGES  STATUS
16cab9fd-a4b3-4937-a7a3-7838516788d3  2019-10-20T02:23:44+00:00  3S        -       -       SUCCESS


> docker-gcloud builds log \
  16cab9fd-a4b3-4937-a7a3-7838516788d3
---------------------------------------------------- REMOTE BUILD OUTPUT ----------------------------------------------------
starting build "16cab9fd-a4b3-4937-a7a3-7838516788d3"

FETCHSOURCE
BUILD
Already have image (with digest): gcr.io/cloud-builders/git
hoge
PUSH
DONE
-----------------------------------------------------------------------------------------------------------------------------

カレントディレクトリのcloudbuild.yaml をちゃんとみてくれてますね。でけたー

環境設定

コマンドを作成

Google Cloud SDKのDockerイメージは公式から提供されているのでそれを利用します。

google/cloud-sdk - Docker Hub
https://hub.docker.com/r/google/cloud-sdk/

下記を参考にしてDockerコンテナ内でgcloud コマンドを実行できるようにします。

Dockerにホームディレクトリをマウントしちゃおう - Qiita
https://qiita.com/74th/items/a3a7d6826a67e8a61608

Dockerコンテナからホスト側カレントディレクトリにアクセス - Qiita
https://qiita.com/yoichiwo7/items/ce2ade791462b4f50cf3

ポイントは以下のとおりです。

  • -v $HOME/.config/gcloud:$HOME/.config/gcloud -e "HOME=$HOME" で認証情報をホストにあるものを参照
  • -v $PWD:$PWD -w $PWD でコマンド実行時のカレントディレクトリを指定
  • --entrypoint=gcloud$* で通常のgcloud コマンド実行と同じ挙動を実現
docker-gcloud
#!/bin/sh
docker run -it --rm \
  -v $HOME/.config/gcloud:$HOME/.config/gcloud \
  -v $PWD:$PWD \
  -e "HOME=$HOME" \
  -w $PWD \
  --entrypoint=gcloud \
  google/cloud-sdk:alpine \
  $*

作成したファイルのシンボリックリンクを/usr/local/bin にはって実行できるようにします。/usr/local/bin$PATH に含まれている前提です。

google/cloud-sdk - Docker Hub
https://hub.docker.com/r/google/cloud-sdk/

Dockerにホームディレクトリをマウントしちゃおう - Qiita
https://qiita.com/74th/items/a3a7d6826a67e8a61608

Dockerコンテナからホスト側カレントディレクトリにアクセス - Qiita
https://qiita.com/yoichiwo7/items/ce2ade791462b4f50cf3

自作のコマンドを作成した - Qiita
https://qiita.com/yoshiken/items/2b8e6c24d6b95e65b625

> chmod +x docker-gcloud
> ln -s docker-gcloud /usr/local/bin/

これで最初にあげたようにdocker-gcloud コマンドが実行できるようになります。
gsutil コマンドもエントリーポイントを変えてやれば実現できます。

コマンド実行のカレントディレクトリがDockerコンテナで参照できるので、たいていのコマンド実行では問題にならないかなと。
docker-gcloud がコマンド打つのに長ったらしいのはエイリアスなんかでどうにでもなります。

まとめ

使えるかわかりませんが、とりあえずイメージしてたコマンドが出来上がりました。

参考

google/cloud-sdk - Docker Hub
https://hub.docker.com/r/google/cloud-sdk/

Dockerにホームディレクトリをマウントしちゃおう - Qiita
https://qiita.com/74th/items/a3a7d6826a67e8a61608

Dockerコンテナからホスト側カレントディレクトリにアクセス - Qiita
https://qiita.com/yoichiwo7/items/ce2ade791462b4f50cf3

自作のコマンドを作成した - Qiita
https://qiita.com/yoshiken/items/2b8e6c24d6b95e65b625

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?