compose コマンドの docker-compose との互換性
Docker CLI 内のcompose
コマンドは、docker-compose
コマンドとそのフラグをほぼサポートします。
このコマンドはdocker-compose
と完全な互換性を持つものとしています。
Compose 機能の中でcompose
コマンドでは利用できないものを見つけた場合は、GitHub リポジトリ Compose に issue をあげてください。
優先度をあげて対応することができます。
未実装のコマンドまたはフラグ
以下に示すコマンドはまだ実装されていませんが、近いうちに実装される予定です。 これらのコマンドの利用が優先される場合にはお知らせください。
compose build --memory
このオプションはまだ buildkit によってサポートされていません。
このオプションは Compose においては今のところサポートされていますが、既存の Compose 利用に悪影響を及ぼさないように、このオプションは隠し機能とされています。
これを利用しても何の効果も発生しません。
実装されないフラグ
以下に示すフラグ一覧では、Docker CLI における compose においてサポートする予定のないものを示します。
一部はdocker-compose
において、すでに非推奨となっているためです。
また Docker CLI における compose には不適当なものがあるためです。
compose ps --filter KEY-VALUE
service
コマンドとともに利用するのが複雑でありdocker-compose
において説明が適切ではないため不適当。compose rm --all
docker-compose において非推奨。compose scale
docker-compose において非推奨。(代わりにcompose up --scale
を利用)
グローバルフラグ
--compatibility
は Docker Compose V2 として再署名されました。 これはつまり、それまで V1 として実行されていたコマンドが V2 として実行されるということです。- 違いの 1 つとして、コンテナー名の中での単語の区切り文字があります。
V1 では区切り文字として
_
を使っていましたが、V2では-
を使います。 これによってホスト名と同じように扱いやすくなります。 ただし--compatibility
を利用する際には、Docker Compose は_
を使うことになります。 利用にあたってはどちらかに統一するようにしてください。 そうしておかないと、Docker Compose がコンテナーをサービスのインスタンスとして識別できなくなります。
- 違いの 1 つとして、コンテナー名の中での単語の区切り文字があります。
V1 では区切り文字として
config コマンド
config コマンドは、Docker Compose によって起動されるプロジェクトの設定を表示させるものです。
すでに説明しているように、Compose ファイルには長い書式と短い書式が含まれます。
ports
エントリーがその例です。
以下に示すのはports
セクションの構成部分です。
docker-compose.yml が以下であるとします。
services:
web:
image: nginx
ports:
- 80:80
$ docker compose config
を実行すると、その出力は以下となります。
services:
web:
image: nginx
networks:
default: null
ports:
- mode: ingress
target: 80
published: 80
protocol: tcp
networks:
default:
name: workspace_default
上の出力結果は、Docker Compose によって起動されるプロジェクトの設定を、完全に記述して形になります。
documentation, docs, docker, compose, containers