blog.ojisan.io

Container Optimized OS に nginx を入れるだけの記事

2021-04-24(created)

GCE には、docker コマンドが初めから使える Container Optimized OS というものがあります。 いきなり docker が使えるので、初手でイメージを落としてきたらそのまま何かを serve できてしまいます。 例えば、nginx や MySQL を簡単にセットアップできます。

ただ GCE に慣れておらず、動かしていた時になかなか繋がらなくて困ったので、そういった場合のデバッグや原因の切り分け用に Nginx からページを返すだけのコンテナの作り方をメモしておこうと思います。

コンソールでぽちぽちインスタンスを作る

やることはこの 2 つです。

  • container optimized os を選ぶ
  • firewall を設定チェックボックスにチェックする

GCE は port に対するアクセス制限はタグを割り振り、そのタグに紐づく設定をネットワークの設定画面・ファイアウォールの設定画面経由で行えます。 ただし、80, 443 に関しては最初からタグ(http-server, https-server)が振られているのでそれを使います。

コンソールに入る

SSH で入ってもいいですがいちいち鍵を登録するのめんどくさいので web コンソールから入ります。

必要なイメージを落としてくる

といってもあとはローカルでやることと同じです。

Web コンソールから直接 docker コマンドを叩けるので nginx のイメージを落とします。

docker pull nginx

これで nginx のコンテナを建てれるようになりました。

コンテナを起動する

次に docker run でコンテナを作ります。

docker run -d --rm --name hogehoge -p 80:80 nginx

option は適当につけてはいけないので注意しましょう。

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

きちんとこのような順序で書きましょう。

FYI: https://www.shigemk2.com/entry/dockerrunorder

特に -p を適当な場所につけると、GCE のファイアーウォールの設定を間違えたのかと時間を潰す羽目になるので、基本的なことですが気をつけましょう。

これで port80 で見えるようになりました。(-p ホスト側ポート:コンテナ側ポート なので)

あとは GCP の管理画面にある外部 IP をブラウザに打ち込むと見えるはずです。

nginxのトップ

あとは好きにデバッグを

これで、ポート番号変えても動くんだっけ?登録した起動スクリプトからいきなりコンテナを実行できたっけ?みたいな実験ができます。 手元にイメージが落ちてこないので、何も気にせず docker pull できて気持ちいいですね。