ちなみに

火曜日の空は僕を押しつぶした。

新しいdocker composeで特定サービスのコンテナIDを得る

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