
【Docker基礎】定義ファイルの項目
Docker Compose の定義ファイル(docker-compose.yml)では、どのコンテナをどのように動かすか、また どのネットワークやボリュームを作るか といった情報を YAML 形式で記述します。ここでは、よく登場する定義項目を整理し、Docker CLI(docker run など)との対応を分かりやすくまとめていきます。

1.大項目(複数形)とその意味
| 項目 | 内容 |
|---|---|
| services | コンテナに関する定義(最も重要) |
| networks | ネットワークに関する定義 |
| volumes | ボリュームに関する定義 |
定義ファイル(docker-compose.yml)では、まず version: "3" などで Compose のバージョンを指定し、そのあとにこの大項目を並べていくのが一般的です。
2.よく使われる定義内容
下の表は、よく使われる定義項目と docker run での対応を示しています。
| 項目 | docker run の対応 | 内容 |
|---|---|---|
| image | イメージ引数 | 利用するイメージを指定する。 |
| networks | --net | 接続するネットワークを指定する。 |
| volumes | -v, --mount | 記憶領域をマウントする(ボリュームマウントやバインドマウント) |
| ports | -p | ポートのホスト→コンテナマッピングを設定 |
| environment | -e | 環境変数を設定する。 |
| depends_on | なし | 別のサービスに依存 することを示す(起動順序などを指定)。 |
| restart | なし | コンテナが停止したときの再起動ポリシー(no, always, on-failure, unless-stopped) |
depends_on: 例として、WordPress が DB に依存する場合、DB を先に立ち上げるよう指定したいときに使うrestart: コンテナが何らかの理由で停止したとき、自動再起動するかどうかを設定
3.その他の定義項目
| 項目 | docker run の対応 | 内容 |
|---|---|---|
| command | コマンド引数 | コンテナ起動時のデフォルトコマンドを上書き |
| container_name | --name | コンテナ名を明示的に指定 |
| dns | --dns | カスタム DNS サーバを設定 |
| env_file | なし | 環境変数を格納したファイルを読み込む |
| entrypoint | --entrypoint | コンテナ起動時の ENTRYPOINT を上書き |
| external_links | --link | 外部リンクを設定 |
| extra_hosts | --add-host | ホストの IP を手動で追加(hosts ファイルに書くイメージ) |
| logging | --log-driver | ログ出力の方法を設定 |
| network_mode | --network | ネットワークモードを設定 |
4.定義ファイルと実際のコンテナ状態のズレ
Docker Compose の設定は、あくまで テキストファイル(docker-compose.yml)に書かれた “初期状態” を表すに過ぎません。
もし Compose で起動したコンテナを、docker rename など Docker CLI で変更してしまっても、定義ファイルには反映されません。その結果、docker compose down しようとしても対象コンテナが見つからず停止できなくなる場合があります。
運用の基本は、小手先の変更をしない で一貫して定義ファイルを正として扱うことです。
まとめ
- 大項目 は
services,networks,volumesのように複数形で書き、コンテナ・ネットワーク・ボリュームを定義 - よく使われる項目:
image,networks,volumes,ports,environment,depends_on,restartなど - その他:
command,container_name,dns,env_file,entrypointなど追加の設定も可能 - 定義ファイルと実際のコンテナ は同期しないため、運用中に手動でコンテナをいじると齟齬が出る。
次のコンテンツでは、実際に Docker Compose ファイル を書いて、複数コンテナを起動してみる手順を紹介します。どのように YAML で指定するか、具体的な例を通じて理解を深めましょう。
