はじめに
本記事は、Docker Composeの基本的な考え方から、実際の環境構築手順、よく使うコマンドまでを整理してまとめてみたになります!
これからDocker Composeを触る方の参考になれば嬉しいです!
Docker自体の基礎を確認したい方へ
コンテナの概念やインストール方法など、Dockerの基本については以下の記事で解説しました。必要に応じてあわせてご参照ください。
👉 【Docker初心者向け】UbuntuでDockerを扱う
Docker Composeとは?
Docker Composeは、複数のコンテナを定義し、一度にまとめて実行・管理するツールになります。
基本的に、Dockerが標準で搭載している、Docker Engineでは、それぞれに対して起動コマンドを入力する必要があります。
Docker Composeを使えば、設定ファイル(compose.yaml)に構成を書くことで、複数のコンテナを一括で操作できるようになります。
Docker と Docker Composeの違い
両者の違いを整理すると以下のようになります。
| 項目 | Docker (単体) | Docker Compose |
|---|---|---|
| 役割 | コンテナを動かす基盤 | 複数のコンテナを一括管理するツール |
| 操作対象 | 基本的にコンテナを1つずつ操作 | 複数のコンテナを一度に操作 |
| 設定方法 | 実行時、コマンドごとに引数を指定 |
compose.yaml ファイルに設定をまとめる |
| 活用シーン | 単体のコンテナを試作・検証する際 | WebとDBを連携させるなど、システムを作る際 |
Docker Composeを使う3つのメリット
ハンズオン:Webサーバー構築
実際にDocker Composeを使って、簡単なWebサーバー(Nginx)を立ち上げてみましょう。
手順1:フォルダの作成
まずわかりやすい名前のフォルダを一つ作ってください。
ここでは、my-web-serverとします。
手順2:表示させるページを作る
作成したフォルダの中に、お好みのテキストエディタで index.html というファイルを作成し、以下の内容を保存してください。
<h1>ようこそ</h1>
<p>これはDocker Composeで動かしている、Webサイトです。</p>
手順3:設定ファイルを作る(compose.yaml)
同じフォルダの中に、compose.yaml というファイルを作ります。
以下の内容をコピーしてください。
インデント(行頭のスペース)がずれるとエラーになります。
services:
web:
image: nginx # Nginx(Webサーバー)のイメージを使います
ports:
- "8080:80"
volumes:
- ./index.html:/usr/share/nginx/html/index.html
ここまでの作業で、フォルダ構成は以下のようになっているはずです。
my-web-server/
├── compose.yaml
└── index.html
手順4:起動コマンドを実行する
ターミナルを開き、作成したフォルダへ移動します。
cd Desktop/my-web-server
# ※パスはご自身の環境に合わせて変更してください
以下のコマンドを実行して起動します。
docker compose up -d
初回はイメージのダウンロードが入るので少し時間がかかります。
Started や Running と表示されれば成功です。
手順5:ブラウザで確認する
ブラウザ(ChromeやSafariなど)を開き、以下のアドレスにアクセスしてください。
「ようこそ」というメッセージが表示されていれば成功です!
VS Codeの機能を使って確認する場合
VS Codeをお使いの場合は、以下の手順でも確認できます。
- VS Codeのターミナルを開き、上部のタブから「ポート」をクリック
- ポート一覧にある「ポートの転送」をクリックし、「8080」と入力
- 地球のマーク(ブラウザで開く)をクリック
コンテナの停止・削除
動作確認ができたら、コンテナを停止して削除しましょう。
compose.yaml があるディレクトリで以下のコマンドを実行します。
docker compose down
解説:何が起きたのか?
通常のDockerコマンドだと、以下のような長いコマンドを打つ必要があります。
docker run -d -p 8080:80 -v $(pwd)/index.html:/usr/share/nginx/html/index.html nginx
Docker Composeを使うことで、compose.yaml に「Webサーバーを使って」「ポートは8080で」「このファイルを表示して」という設計図を書いたため、docker compose up -d という短い合図だけでその通りに動いてくれました。
Docker Compose基本コマンドまとめ
よく使うコマンドをまとめました。
| コマンド | 説明 |
|---|---|
docker compose up -d |
コンテナを作成してバックグラウンドで起動する |
docker compose down |
コンテナとネットワークを停止・削除する |
docker compose start |
停止しているコンテナを再開する |
docker compose stop |
コンテナを一時停止する(削除はしない) |
docker compose ps |
現在動いているコンテナ一覧を表示する |
docker compose logs |
コンテナのログを表示する(-fでリアルタイム表示) |
補足:よく使うオプションやコマンド
バックグラウンド実行 (-d)
up コマンドには基本的に -d オプションを付けます。
こちらのオプションをつけない場合は、フォアグラウンドで実行され、ターミナルにログが流れ続けます。
エラーの原因調査など、ログをリアルタイムで確認しながら進めたい場合はこちらが便利です。その際は操作用に別のターミナルを開いてください。
設定確認 (config)
docker compose config
compose.yaml の記述ミスがないか確認したい時に便利です。
コンテナ内に入る (exec)
docker compose exec web bash
# "web"の部分はyamlで定義したサービス名
起動中のコンテナの中に入って操作(DB接続確認など)を行いたい時に使います。
まとめ
Docker Composeを使うと、複雑なコマンドを覚える必要がなくなり、設定ファイル一つで誰でも同じ環境を再現できるようになります。
もっと色々機能があるので、ぜひご自身でも色々試してみてください!