訳者からひとこと
Google Cloudコミュニティに昨年投稿されたContainer-Optimized OS上でDocker Composeを動かすチュートリアルを和訳しました。
(あまり流行ってないですが、)Container-Optimized OSとはGoogleがGCE上でDockerを動かすために提供している軽量OSです。GKEでクラスタ組む程ではないけど、GCE上でDocker使いたいって時に使えます。
このOSでは初期状態でDockerのみが使えるようになっており、Docker Composeは入っていません。このチュートリアルを実行することで、Container-Optimized OS上でDocker Composeが使えるようになります。
なお、日本のリージョンを指定したり翻訳時の最新版ソフトウェアを使用したりするように、本文の一部を変更しています。
お気づきの点やよりわかりやすい表現の提案がありましたら、ご指摘お願い致します。
以下、本文です。
翻訳元
Running Docker Compose with Docker
翻訳元の最終更新日: 2017年5月3日
DockerでDocker Composeを動かす
このチュートリアルでは、Container-Optimized OS が動作するインスタンス上のコンテナで Docker Compose を実行する方法を説明します。
目的
- Container-Optimized OS上でDockerを使ってDocker Composeを動かす
- コンテナ上で動く
docker-compose
へのエイリアスを作成する
はじめる前に
- Google Cloud Platformコンソールのプロジェクトページ からCloud Platformプロジェクトを作成または選択する
- プロジェクトの 課金を有効 にする
料金
このチュートリアルでは、以下のようなCloud Platformの有料機能を利用します。
料金を推計するには 料金シミュレータ を利用してください。
仮想マシンの設定をする
Container-Optimized OS の安定版イメージを使って、新しいCompute Engineインスタンスを作成してください。
- Google Cloud Platformコンソール を開く。
- 新しいCompute Engineインスタンスを作成する。
- 任意のゾーンを選択する。(例: "asia-northeast1-b")
- 任意のマシンタイプを選択する。(例: "micro" (f1-micro))
- 起動ディスクを "Container-Optimized OS stable" に変更する。
- ファイアフォール欄のHTTPトラフィックを許可するチェックボックスを選択する。
- 作成ボタンを押し、Conpute Engineインスタンスを作成する。
サンプルコードを入手する
-
インスタンスの作成が完了したら、SSHボタンを押してインスタンスに接続されたターミナルを開く。
-
git
コマンドを使って Hello Worldサンプル をダウンロードする。$ git clone https://github.com/docker/dockercloud-hello-world.git $ cd dockercloud-hello-world
Docker Composeを実行する
Container-Optimized OS には多くの 利点 がありますが、デフォルトで制限されているため、コンテナにバンドルされていないソフトウェアを実行するのは難しいです。例えば、ファイルシステムのごく限られた範囲しか実行可能な状態でマウントされていないため、一般的な説明に沿ってインストールした Docker Compose は利用できません。代わりに Docker Composeイメージ を実行することができます。
-
Docker Composeイメージをダウンロードし実行します。最新版を使うには Docker Composeのタグ を確認してください。
$ docker run docker/compose:1.22.0 version
-
サンプルコードを実行するため、Docker Composeコマンドを実行してください。
Docker ComposeコンテナがDockerデーモンにアクセスできるように-v /var/run/docker.sock:/var/run/docker.sock
オプションでDockerソケットをマウントしてください。
カレントディレクトリをコンテナ内で利用できるように-v "$PWD:/rootfs/$PWD"
オプションを使ってボリュームとしてマウントし、-w="/rootfs/$PWD"
で作業ディレクトリを変更してください。$ docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$PWD:/rootfs/$PWD" \ -w="/rootfs/$PWD" \ docker/compose:1.22.0 up
-
docker run
コマンドを実行したまま Google Cloud Platformコンソールのインスタンスページ を開き、インスタンスの外部IPアドレスへのリンクをクリックしてください。
"Hello World"というメッセージが表示されていることが確認できるはずです。 -
SSHウィンドウを開き、Ctrl-Cを押してサンプルアプリケーションを停止してください。
Docker Composeへのエイリアスを作成する
docker run ... docker/compose:1.22.0 up
コマンドは、通常の方法でDocker Composeがインストールされたシステムで docker-compose up
コマンドを実行するのと同じです。この長いコマンドを覚えたり打ち込んだりしなくて良いように、このコマンドのエイリアスを作りましょう。
-
あなたが使っているシェルの設定ファイル(例:
.bashrc
)にdocker-compose
エイリアスを作成してください。$ echo alias docker-compose="'"'docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$PWD:/rootfs/$PWD" \ -w="/rootfs/$PWD" \ docker/compose:1.22.0'"'" >> ~/.bashrc
-
bashの設定を再読込してください。
$ source ~/.bashrc
-
サンプルディレクトリにいない場合、戻ってください。
$ cd ~/dockercloud-hello-world
-
新たに作った
docker-compose
エイリアスを使って、サンプルコードを実行してください。$ docker-compose up
インスタンスの外部IPアドレスにアクセスすると、"Hello World" というメッセージが表示されているはずです。