Google Container Engine(GKE)の構築についての「その2」です。
何はともあれ「Docker」
GKEではKubernetesを使っているという話を前回書きました。
Google Container Engineに移行した その1 | A-tak-dot-com
とはいえ実際のコンテナ部分はDockerそのもの。まずはDockerでコンテナを作るところからはじめます。
まずはDocker環境をMacに作る
まずはMacにDocker環境を作ってみます。
以下からDocker Toolboxをダウンロードしてインストールします。
インストールの手順はここ↓を参考に。
とはいえただMacのパッケージをインストーラーで入れるだけなので楽勝です。
最後にDocker Quickstart TerminalかKitematicのどちらを起動するか選択が出ますが、どっちでもいいです。Kitematicの方はGUIのツールで、ツールを終了すると一緒に起動しているVirtualBoxも自動で終了できるように設定できるので、私はKitematicを使っています。
KitematicはGUIのツールなんですが、左下の「DOCKER CLI」を押してターミナルで使っています。
さっきも軽く書きましたが、DockerはVirtualBoxを使います。DockerがLinuxでしか動かない為です。
Nginx のコンテナを作る
DockerのコンテナはDockerfileという設定ファイルを使って作成します。テキストエディタで設定を書いていきます。こんな感じです。
見てもらうとわかるんですが、普通にLinuxでコマンド使ってセットアップしているのと変わらない感じです。Google Cloud Logでログが集約できるようにnginxのログを標準出力に出しています。こうするとGKEで自動的に作成されるfluentdのコンテナがログを拾ってくれます。
Kubernetes管理サービスGoogle Container Engine、Google Container Registryの概要と使い方、Fluentdによるログ監視 (4/5)
Docker 1.8 の Fluentd logging driver でコンテナログをフォワードする – Qiita
nginxinc/docker-nginx
「FROM centos」でベースとなるイメージを指定しています。「centos」は公式のCentOS7のイメージです。
ADDでNginxのリポジトリ設定ファイルをコピーしています。Dockerfileと同じ場所にファイルを置いておくと、ADDでコンテナにファイルをコピーできます。
あとは、「RUN」のあとに実行するコマンドを書いていきます。yumで普通にNginxをインストールしています。
次にADDでNginxのconfファイルをコンテナにコピーしています。
各ファイルはこんな感じ。普通のNginxの設定です。
最後にENTRYPOINTでNginxのプロセスを起動しています。
コンテナの起動
コンテナをビルドしてみます。
私はDropboxにDockerのファイルを置いているので、それを指定しています。プロジェクトIDはGoogle Cloud PlatformのプロジェクトのIDです。
docker buildでコンテナのイメージを作成します。 -tの後にタグをつけますが、GKEで使うためには特定のタグをつけてあげる必要があります。
asia.gcr.ioがリポジトリのリージョンで、その後にプロジェクトID、そしてイメージの名前 : バージョン番号を指定します。
バージョン番号は新しいバージョンを作る度にカウントアップする必要があるっぽいです。これやらないとコンテナの内容が全然更新されないみたいなことが起きます。
このあたりは以下に書いてあります。
作成したイメージは以下のようにしてGoogle Container Registryにアップロードします。
ちなみにローカルでDockerコンテナを動かすには以下のようなコマンドを入力しますが、Kubernetesで動かす前提でいろいろ設定してしまっているので動かないかもしれません。
設定ファイル全部書いてたら長くなってしまったので、続きはまた次回。PHP-FPMのコンテナを設定します。
Google Container Engineに移行した その3 | A-tak-dot-com