web-dev-qa-db-ja.com

画像に基づいてDockerプロセスをフィルタリングする方法

Docker processコマンドを使用してdockerインスタンスのコンテナIDを取得しようとしましたが、nameでフィルターを使用しようとするとfineが機能します。

Sudo -S docker ps -q --filter="name=romantic_rosalind"

結果コンテナID:

3c7e865f1dfb

しかし、imageを使用してフィルタリングすると、すべてのインスタンスコンテナIDが取得されます。

Sudo -S docker ps -q  --filter="image=docker-mariadb:1.0.1"

結果コンテナID:

5570dc09b581

3c7e865f1dfb

しかし、私はmariadbのコンテナIDのみを取得したいです。

フィルタをイメージとして使用してdockerプロセスのコンテナIDを取得する方法?

39
Priya Dharshini

awkおよびgrepを使用して、指定されたコンテナIDをフィルタリングできます。例えば:

docker ps | grep "docker-mariadb:1.0.1" | awk '{ print $1 }'

これにより、コンテナのIDが出力されます。

31
wsl

うまく機能する「イメージ」の代わりに「祖先」を使用します。例:

Sudo -S docker ps -q  --filter ancestor=docker-mariadb:1.0.1

Dockerチームは、それを最新バージョンに追加した可能性があります。 http://docs.docker.com/engine/reference/commandline/ps/

72

コンテナーをリストするためのコマンドdocker container lsdocker psの代替)を使用すると、ソリューションは次のようになります。

docker container ls | grep "docker-mariadb:1.0.1" | awk '{ print $1 }'

次のように*記号(必要な場合)を使用することもできます。

docker container ls | grep "docker-mariadb:*" | awk '{ print $1 }'

https://docs.docker.com/engine/reference/commandline/container_ls/ を参照してください

2
heroin
docker ps -a | awk '{ print $1,$2 }' | grep imagename | awk '{print $1 }'

これは完璧です。必要に応じて、以下のように特定のstsatusのみの実行イメージのフィルターを追加できます

docker ps -a --filter=running | awk '{ print $1,$2 }' | grep rulsoftreg:5000/mypayroll/cisprocessing-printdocsnotifyconsumer:latest | awk '{print $1 }'

他のさまざまなフィルターオプションについては、こちらをご覧ください

https://docs.docker.com/v1.11/engine/reference/commandline/ps/

0
Mohammed Rafeeq