プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2020/07/27

GCP で Docker を使う

event_note2020/07/26 16:02

Google Cloud Platform の無料枠内で Docker を使ってみました。

とりあえず今回使うのは GCE (Google Compute Engine) です。
本格的にやるなら GKE (Googke Kubernetes Engine) のほうがいいみたいですが、よくわかりません。

無料枠の確認

以下で確認できます。

今回は GCE を使うので、2019/06/23 現在の条件は以下になります。

前提

以下は済んでいる前提です。

  • Googleアカウントの作成
  • Google Cloud Platform の利用登録

GCP の設定

プロジェクトの作成

まずは適当にプロジェクトを作成して選択します。

VM インスタンスの作成

サイドメニューから Compute Engine > VM インスタンスを選択します。

作成をクリックします。

以下のように設定して、作成をクリックします。

  • 名前は適当に入力
  • マシンタイプは f1-micro を選択
  • リージョンは 無料枠対象の米リージョンを選択(ゾーンは適当)
  • OS は Ubuntu 19.04 Minimal を選択
    • 最初は Docker コンテナの実行に最適化されている Container-Optimized OS にしていましたが、何故かスワップの設定ができなかったため断念
  • ディスクのサイズを 30GB に変更
  • 「HTTP トラフィックを許可する」「HTTPS トラフィックを許可する」にチェック

尚、無料枠で収まっていれば、画面の右側に以下のように表示されます。

今月の f1-micro インスタンス使用量は、最初の 720 時間分が無料です。

外部 IP アドレスの設定

VM インスタンスを再起動しても IP アドレスが変わらないように静的 IP アドレスを割り当てます。

サイドメニューから VPC ネットワーク > 外部 IP アドレスを選択します。

ファイアウォールの設定

外部からアクセスできるように、必要に応じてポートの解放を行います。

OS の設定

SSH で接続

VM インスタンスに SSH で接続します。
いくつかやり方はありますが、手っ取り早く接続するために、ブラウザからインスタンスの SSH をクリックして接続します。

Swap の設定

メモリ不足になるという話をよく聞くので、スワップを追加しておきます。

現在のスワップを確認

$ free -m

スワップの追加

以下のコマンドを実行します。

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile

簡単な解説

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

dd コマンドは、if で指定したファイルを、of で指定したファイルへ、 bs に指定された入出力ブロックサイズ単位で、count に指定された回数コピーを実行するコマンドです。

if/dev/zero を指定しているので、/swapfile の中身はすべて 0 で埋め尽くされたファイルとなります。

bs=1Mcount=4096 なので、ブロックサイズ(1M)×4096 のサイズのファイルが作成されます。
ここでは 4GB となります。

$ sudo chmod 600 /swapfile

作成した swapfile の権限を root のみに変更します。

$ sudo mkswap /swapfile

作成した swapfile をスワップ領域として設定します。

$ sudo swapon /swapfile

スワップ領域を設定しただけではダメなので、 スワップを有効化します。

ブート時にスワップを有効化

ブート時にスワップを有効になるように永続化します。

Docker のインストール

sudo apt-get install docker
sudo apt-get install docker-compose