コンテナ管理したい(compose.yaml)
$ docker compose version
Docker Compose version v2.29.2-desktop.2
docker composeは複数のコンテナを管理するコマンドです。
注釈
Docker ComposeにはV1とV2があります。
Compose V1はdocker-composeというコマンドです。
Pythonで実装された単独ツールで、設定ファイルはdocker-compose.yamlです。
Compose V2はdocker composeというサブコマンドです。
Go言語で再実装され、Docker CLIに統合されたことで、より多くの機能を使うことができます。
設定ファイル名はdocker-compose.yamlもそのまま使えますが、compose.yamlが推奨されています。
このページはCompose V2を想定しています。
警告
Compose V1のサポートは2023年6月に終了しています。
また、Docker Desktop v4.33.0(2024年7月)でdocker-composeコマンドが削除されました。
V1の記事を見かけた場合は、適宜V2に読み替えてください。
基本的な設定例(compose.yaml)
# compose.yaml
# コンテナの設定
services:
コンテナ名:
image: イメージ名
volumes:
- data:コンテナのパス
# ボリュームの設定
volumes:
data:
設定ファイルはcompose.yamlです。
servicesの中に利用するコンテナごとの設定、
volumesの中に内部ボリュームの設定を記述できます。
設定ファイルを作成した後は、以下のコマンドでコンテナを起動・管理します。
$ docker compose up # コンテナ起動
$ docker compose ps # 稼働中のコンテナ確認
$ docker compose logs # ログ確認
$ docker compose down # コンテナ停止・削除
詳細はdocker-compose.mdの各セクションを参照してください。
コンテナ設定したい(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を参照してください。
注釈
versionキーは不要です
Compose V1の初期にはdocker-compose.yamlの先頭にversion: "3"のようにバージョン指定をしていましたが、Docker Compose 1.27.0以降ではversionキーは不要です。
古い設定ファイルでversionキーが定義されている場合、以下のようなWARNINGが表示されます。
WARN[0000] ./docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
新規作成する場合はversionキーを記述しないようにしましょう。
ボリューム設定したい(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の設定内容を確認できます。