docker-composeで特定サービスのコンテナIDを得たいことがある。例えば docker attach
したいときとか。
これまでなら以下のように書くと web
サービスだけのIDが取得できた。
$ docker-compose ps -q web
しかし、新しい Docker Compose CLI では ps
サブコマンドでサービスの絞り込みが出来ないのでちょっと工夫が必要。
$ docker compose ps --format json | jq -r '.[] | select(.Service == "web") | .ID'
突然 jq が出てきてちょっとびっくりしそう。もっと良い方法があればいいのだけれど。
$ docker-compose ps --help
List containers.
Usage: ps [options] [--] [SERVICE...]
Options:
-q, --quiet Only display IDs
--services Display services
--filter KEY=VAL Filter services by a property
-a, --all Show all stopped containers (including those created by the run command)
$ docker compose ps --help
Usage: docker compose ps
List containers
Options:
-a, --all Show all stopped containers (including those created by the run command)
--format string Format the output. Values: [pretty | json]. (default "pretty")
-q, --quiet Only display IDs
--services Display services