0
0

More than 1 year has passed since last update.

GCE上にデプロイしたコンテナが起動時に割り当てるポートの指定

Last updated at Posted at 2022-04-15

課題

GCEには 指定のコンテナをVMに適用する機能が存在する。
See: VM と MIG へのコンテナのデプロイ

[機能概要]
要するに 1VMに 1コンテナを配置するだけの機能である。つまりGKE的な観点で言えばリソースを最大限に活用しているとは言い難い。しかしVM上に直接環境を作るのに比べれば コンテナの可搬性を活かせるので便利である。

[利用法]
対象のコンテナイメージを Artifact Registry にアップロードし、VM作成時にそれを指定すれば起動時にコンテナが勝手に立ち上がる。

しかし、コンテナにAPIサーバーを指定しても、VM上からの curl で応答しないときがある。

ポート公開に失敗している風な挙動であり、docker run -p 8080:8080 ${コンテナID} で立ち上げ直せば無事疎通するのだが、VM起動時に自動的に立ち上がるコンテナには -p オプションを渡せない。一体どう指定すれば良いのだろうか?

解決

EXPOSEを明記した Dockerfileでイメージを再登録すると、起動時に指定のポートが割り当たる。

EXPOSE 8080 と指定すると VM起動時のポート割り当てが -p 8080:8080 相当になる。

普段 docker run -p オプションや docker-compose.yml 上のport属性で割り当てるので、省略しがちな EXPOSE だが、GCE上で稼働させるときはきちんと指定しないとハマるらしい。

以上は コンテナ・VM間の挙動だが、 VM外へのポート公開も暗黙的に行われるらしいので、そういう挙動と認識しておくのは重要な気がする。See:コンテナポートの公開

0
0
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
0
0