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 がコンテナーをサービスのインスタンスとして識別できなくなります。

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