LoginSignup
8
7

GCP Container-Optimized OS で docker-compose を使う方法 | 5分で Airflow をデプロイしましょう

Last updated at Posted at 2022-02-20

Google Cloud の Container-Optimized OS は、コンテナに最適化された Compute Engine VM 用のオペレーティングシステムイメージです。Docker ランタイムが既に入っているので、プロビジョニングも基本的に不要です。OSの自動更新や、ファイアウォールの遮断など、セキュリティ上の利点もいくつかあります。

多くの場合は、一つのコンテナではなく、複数のコンテナを同時に動かしたいので、docker-compose のようなツールを使います。しかし、Container-Optimized OS には docker-compose がインストールされておらず、VM インスタンスにソフトウェアパッケージを直接インストールすることもできないという制限がかかっています。

docker-compose を実行する方法

docker-compose を動かしたいなら、Docker が提供する docker/compose イメージを利用できます。

docker run --rm \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v "$(pwd):$(pwd)" \
  -w "$(pwd)" \
  docker/compose:1.29.2 up

docker-compose コンテナが Docker デーモンにアクセスできるように、上記コードブロックの2行目で docker.sock を Volume としてマウントしています。そして、手元の docker-compose.yaml ファイルを参照できるように、カレントディレクトリも Volume としてマウントし、-w で移動します。

上記コマンドの書き方は、以下の記事で紹介されています。

毎回書くのが面倒な方は、alias として登録するといいでしょう。

# ~/.bashrc
alias docker-compose='docker run --rm \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v "$(pwd):$(pwd)" \
  -w "$(pwd)" \
  docker/compose:1.29.2'

Airflow 環境を立ち上げる

さて、実際にコンテナ化した docker-compose コマンドを使ってアプリケーションを立ち上げましょう。私は Airflow をよく利用しているので、事例を挙げたいと思います。

まず、Compute Engine VM を作成します。

  • マシンタイプ e2-standard-4 を選択
  • ブートディスクの OS を「Container Optimized OS」に、バージョンを最新 LTS に設定する(当時 93-16623.102.12 LTS を使いました)
  • ファイアウォール設定で「HTTP トラフィックを許可する」にチェックを入れる

インスタンスを立ち上げたら、SSHでログインします。Airflow UI をブラウザーで開きたいので 8080 番ポートをフォーワーディングします。

gcloud --project *** compute ssh instance-1 --zone=asia-northeast1-a -- -L 8080:localhost:8080

次に Airflow のドキュメントの通り、フォルダーの作成と環境変数の設定を行います。

mkdir -p ./dags ./logs ./plugins
echo -e "AIRFLOW_UID=$(id -u)" > .env

そして Airflow の公式 docker-compose.yaml をダウンロードします。

wget https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml

最後に、docker-compose コマンドで環境を立ち上げます。

docker run --rm \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v "$(pwd):$(pwd)" \
  -w "$(pwd)" \
  docker/compose:1.29.2 up -d

1分ほど待ってから http://localhost:8080 をブラウザーでを開くと、ログイン画面が表示されます。ユーザー名とパスワードをどちらも airflow と入力してログインすると、Airflow の管理画面が表示されます。

Container-Optimized-OS-Airflow.png

終わりに

以上、Google Cloud の Container-Optimized OS で docker-compose を使う方法について紹介しました。少しでもお役に立てられたらと思います。コンテナ化したアプリケーションのコンピュート環境として、Compute Engine VM + Container-Optimized OS の組み合わせがとても便利です。この記事で紹介したように、複数のコンテナ実行にも対応できるので、ぜひご検討ください。

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