TL;DR
- Google Compute Engine で上で任意・単一の docker コンテナを実行して ssh ログインしたい
- 何でもいいからとりあえずクラウド上でコンテナ動かしてみたいな程度のモチベ
- ちょっと設定書くだけで済むからめっちゃ楽ちんだよ
1次情報
こちら --> https://cloud.google.com/compute/docs/containers/deploying-containers?hl=ja 要約すると
- Compute Engine へ docker コンテナをデプロイすることが可能
- 「デプロイする」が何のことを指すのかは明記されてない
- 1インスタンス1コンテナしか想定してないよ
試しに
python コンテナデプロイ付きのインスタンスを作成する
- Google Cloud Platform にログイン
- ホーム左枠の「コンピューティング --> Compute Engine --> VM インスタンス」から「インスタンスの作成」を選択
- 「名前」は適当に埋める
- 「マシンタイプ」は「f1-micro」に変更
- こうすると Always Free 枠に収まる
- テスト目的なので $300 の無料枠は使いたくない
- 「この VM インスタンスにコンテナ イメージをデプロイします。」にチェック入れる
- 「コンテナ イメージ」は「python」
- Docker Hub 公式イメージの場合諸々省略してイメージ名だけでも通る
- フルネームの場合
registry.hub.docker.com/library/<dockerimagename>
って書く
- 「コンテナの詳細オプション」をクリック
- 「STDIN のバッファの割り当て」と「疑似 TTY の割り当て」にチェックを入れる
- 「作成」をクリック
コンテナにログインする(on Web)
- ホーム左枠の「コンピューティング --> Compute Engine --> VM インスタンス」で作成したインスタンスの一覧が表示されてるはず
- 目的のインスタンスの行の「接続」列の「SSH」をクリック
- 暫く待つとターミナルが立ち上がる
- ログイン直後に「エラー起きてるからログ見ろ(意訳)」みたいなメッセージが出てない事を確認
docker ps
で python イメージのコンテナの「STATUS」が「Up」になっていることを確認docker exec -it <CONTAINER_NAME> bash
で bash ログインしてみる<CONTAINER_NAME>
はdocker ps
で表示されたものを入れれば OK
コンテナにログインする(on gcloud)
ローカル PC に Google Cloud SDK を入れてる場合はローカルの端末からログイン可能。
- 「Compute Engine」の「VM インスタンス」で作成したインスタンスの一覧が表示されてるはず
- 目的のインスタンスの行の「接続」列の「SSH」の右の「▼」をクリック
- 「gcloud コマンドを表示」をクリック
- 「CLOUD SHELL で実行する」をクリック
- コマンドが表示されるのでそれをローカル PC のコンソールにコピペして実行
ついでに
- 末尾に
--container <CONTAINER_NAME>
を追加することでコンテナに直接ログイン可能らしい - でも実際やると何故かエラーで落ちる
注意点
- インスタンス起動中はずっと料金が発生する
- 無料枠の場合はその枠を消費する
- 使い終わったらマメに落とさないと大変な事になる
感想など
- インスタンス起動と同時に任意のコンテナを立ち上げる方法は分かった
- コンテナの起動設定はなぜか docker コマンドのオプションとの対応関係をボカしててわかりにくい
- stdin とか tty の設定しないと永久リブートになるやつでハマった
- docker の事よく分かってなかったってのはある
- 多分 web サーバーとかの起動しっぱなし系のイメージだとうまく行っていた
- コンテナの終了をトリガーにしてインスタンスも落としたいんだけど、それをやりたい場合は自分でいろいろ組まないといけないらしい
- 次はファイルシステムのマップでもやってみるか
参考
- https://cloud.google.com/free/docs/gcp-free-tier?hl=ja&_ga=2.216399826.-511870373.1592141380
- https://cloud.google.com/compute/docs/containers/deploying-containers?hl=ja#console
- https://cloud.google.com/compute/docs/containers/configuring-options-to-run-containers?hl=ja
- https://stackoverflow.com/questions/34198392/docker-official-registry-docker-hub-url