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