docker ipコンテナのリストを取得する

docker ipコンテナのリストを取得する

x 個のコンテナを実行している docker があるとします。すべてのコンテナの IP アドレスのリストを取得することは可能ですか?

これを何らかの方法でスクリプトに組み込みたいと思っています。

docker ps -a:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS               NAMES
614497a23ca7        mongo               "/entrypoint.sh mongo"   7 minutes ago       Up 7 minutes             27017/tcp           some-mongo

docker api を確認しましたが、探しているものは見つからないようです。たとえば、次のような結果が返されるようにしたいと思います。

172.17.0.2
... other ips addresses

存在はわかっておりdocker inspect、データをパイプしてフィールドを抽出することもできますIPAddressが、それは単一のコンテナー用です。すべてのコンテナーの IP アドレスを取得したいのですが、これは可能ですか?

答え1

Docker コンテナを IP アドレスで検索したい場合は、次のようにコンテナ ID と IP アドレスをリストします。

for container in `docker ps -q`; do ips=`docker inspect $container | grep -i ipaddress | grep -v null | grep -v \"\" | cut -d ':' -f 2`; echo $container$ips; done

次のようなこともできます (コンテナ ID ではなくコンテナ名を出力します)。

docker ps -q | xargs docker inspect --format "{{range .NetworkSettings.Networks}}{{print .IPAddress}} {{end}}{{.Name}}"

答え2

以下はいかがでしょうか?

for i in `docker ps -q`; do echo $i; echo " : "; docker inspect $i | grep -i ipaddress | grep -v null | cut -d ':' -f 2; done

関連情報