compose コマンドと docker-compose の互換性¶
Docker CLI の compose
コマンドは、 docker-compose
コマンドとフラグの大部分をサポートします。このコマンドは、いずれ docker-comopse
を置き換えるものとして期待されいます。
compose
コマンド内で利用できない Compose 機能が見つかれば、 Compose GitHub リポジトリに issue を作成してください。そうすると、私たちが優先度付けします。
未実装のコマンドやフラグ¶
以下のコマンドは未実装ですが、後に実装される可能性があります。みなさんの利用例で、各コマンドの優先度が高ければ、私たちに教えてください。
compose build --memory
:このオプションは buildkit で未実装です。フラグはサポートしていますが、既存の Compose の使用を中断しないよう、隠されています。何ら影響も与えません。
実装されないフラグ¶
以下のリストに含まれるフラグは、 Docker CLI の Compose 内でサポートする計画がありません。理由は既に docker-compose
で非推奨になっているだけでなく、Docker CLI の Compose には対応する機能が無いからです。
compose ps --filter KEY-VALUE
-service
コマンドに相当する機能が無く、かつ、docker-compose
でも対応するドキュメントが無いためcompose rm --all
- docker-compose で非推奨compose scal
- docker-compose で非推奨(代わりにcompose up --scale
を使う)
グローバル フラグ:
--compatibility
は Docker Compose V2 で廃止済み。つまり、 V2 で実行するコマンドの挙動は V1 を使うのと同じ。1つの違いは、コンテナ名の単語をつなぐ文字。 V1 は
_
をセパレータとして使ったが、 V2 では-
を使い、ホスト名に近い名前を維持する。つまり--compatibility
Docker Compose は、再び_
を使う。どちらか一方に固定しないと、 Docker Compose はコンテナをサービスの実態として認識できなくなる。
config
コマンド¶
config コマンドが意図するのは、 Docker Compose によって実行している、実際のプロジェクトが使う設定情報の表示です。知っての通り、 Compose ファイルの一部には短い形式と長い形式があります。たとえば、 ports
エントリです。以下の例では、 config コマンドによって 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 がプロジェクトを実行するためにつかわれる、全ての設定情報を表示します。
Compose v2 で導入された新しいコマンド¶
コピー¶
cp
コマンドはサービス コンテナとローカル ファイルシステム間で、ファイルやフォルダをコピーする目的があります。
このコマンドは双方向のコマンドであり、 from か to でサービス コンテナから、あるいは、サービス コンテナにコピーできます。
サービス コンテナからローカル ファイルシステムにファイルをコピーします:
$ docker compose cp my-service:~/path/to/myfile ~/local/path/to/copied/file
また、ローカル ファイルシステム上から、サービスとして実行中の全コンテナにもコピーできます:
$ docker compose cp --all ~/local/path/to/source/file my-service:~/path/to/copied/file
一覧¶
ls
コマンドは Compose プロジェクトの一覧を表示する目的があります。デフォルトでは、このコマンドは実行中のプロジェクトのみ表示します。フラグを追加すると、停止しているプロジェクトも表示でき、次の例にあるように json
形式に出力の状態を変えれば、フィルタも可能です。
$ docker compose ls --all --format json
Compose コマンドで --project-name
を使う¶
Compose の GA(一般提供開始)バージョンは、いずれも同じようにコマンドを実行できます。
プロジェクトの compose ファイルを含むディレクトリの外
あるいは、
--file
フラグで Compose のパスを指定しない場合あるいは、
--project-directory
フラグでプロジェクトのディレクトリを指定しない場合
Compose プロジェクトを一度読み込めば、 -p
や --project-name
を使ってプロジェクトを参照できます。
$ docker compose -p my-loaded-project restart my-service
このオプションは start
、 stop
、 restart
、 down
でも機能します。
参考
- Compose command compatibility with docker-compose