【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 しようとしても対象コンテナが見つからず停止できなくなる場合があります。
運用の基本は、小手先の変更をしない で一貫して定義ファイルを正として扱うことです。

まとめ

  1. 大項目services, networks, volumes のように複数形で書き、コンテナ・ネットワーク・ボリュームを定義
  2. よく使われる項目: image, networks, volumes, ports, environment, depends_on, restart など
  3. その他: command, container_name, dns, env_file, entrypoint など追加の設定も可能
  4. 定義ファイルと実際のコンテナ は同期しないため、運用中に手動でコンテナをいじると齟齬が出る

 次のコンテンツでは、実際に Docker Compose ファイル を書いて、複数コンテナを起動してみる手順を紹介します。どのように YAML で指定するか、具体的な例を通じて理解を深めましょう。