コンテナ管理したい(compose.yaml

$ docker compose version
Docker Compose version v2.29.2-desktop.2

docker composeは複数のコンテナを管理するコマンドです。

# compose.yaml

# コンテナの設定
services:
  コンテナ名:
    image: イメージ名
    volumes:
      - data:コンテナのパス

# ボリュームの設定
volumes:
  data:

設定ファイルはcompose.yamlです。 servicesの中に利用するコンテナごとの設定、 volumesの中に内部ボリュームの設定を記述できます。

参考

Docker ComposeにはV1とV2があります。 Compose V1はdocker-composeというコマンドです。Pythonで実装された単独ツールで、設定ファイルはdocker-compose.yamlです。

Compose V2はdocker composeというサブコマンドです。 Go言語で再実装され、Docker CLIに統合されたことで、より多くの機能を使うことができます。 設定ファイル名は docker-compose.yamlもそのまま使えますが、 compose.yamlが推奨されています。

ウェブ検索すると、 V1コマンドの記事もたくさんヒットしますが、 適宜V2に読み替えるのがよさそうです。

注意

Compose V1のサポートは2023年6月に終了しています。 また、Docker Desktop v4.33.0(2024年7月)でdocker-composeコマンドが削除されました。

コンテナ設定したい(services

services:
  コンテナ名1:
    build: イメージのビルド設定
    command: コンテナ起動時のコマンド
    container_name: コンテナ名
    depends_on: 依存関係のあるコンテナ名
    entrypoint: コンテナ起動時のentrypoint
    env_file: 環境変数をファイルから設定
    environment: 環境変数の設定
    image: イメージ名
    labels: コンテナに追加するラベル
    networks: コンテナに接続するネットワーク
    ports: ポート設定(port forwarding)
    restart: 再起動時の設定("no" / "always" / "on-failure"など)
    tty: 擬似端末の配置("false" / "true")
    volumes: コンテナに接続するボリューム
    working_dir: コンテナ内の作業ディレクトリ

  コンテナ名2:
    image: イメージ名
    ...

servicesセクションでコンテナを設定できます。 コンテナごとに必要な設定を記述します。 詳細はCompose Specificationを参照してください。

参考

Compose V1の初期にはdocker-compose.yamlの先頭に version: "3"のようにバージョン指定をしていましたが、 Docker Compose 1.27.0以降ではversionキーは不要です。

WARN[0000] ./docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion

versionキーを定義している場合は、WARNINGが表示されます。

ボリューム設定したい(volumes

services:
  db:
    image: mariadb:latest
    volumes:
      # 内部ボリューム:コンテナ内のパス
      - db_data:/var/lib/mysql

volumes:
  # 内部ボリュームの作成
  db_data:

volumesセクションでボリュームを設定できます。 上記はMariaDBコンテナのボリュームの設定例です。 コンテナの/var/lib/mysqlに作成されるデータベースを db_dataという名前をつけてDocker内の内部ボリュームに保存しています。

注釈

コンテナ内での作業結果は、基本的にコンテナを 終了(docker compose down)したタイミングで削除されます。 作業結果を残したい場合は、内部ボリュームもしくはバインドマウントとして データを残す必要があります。

設定を確認したい(docker compose config

$ docker compose config
$ docker compose config --services
$ docker compose config --images
$ docker compose config --environment
$ docker compose config --variables
$ docker compose config --volumes

docker compose configコマンドでcompose.yamlの設定内容を確認できます。

リファレンス