LoginSignup
0
0

More than 1 year has passed since last update.

起動中のコンテナ情報をシェルスクリプトで取得する方法

Last updated at Posted at 2023-03-20

動機

稼働中の複数のコンテナのコンテナ名などの情報をシェルスクリプトで取得したいということがあり検証しました。

環境

  • Ubuntu 20.04
  • Docker version 20.10.14
  • Docker Compose version v2.4.1

スクリプト

稼働中のコンテナごとにコンテナIDとコンテナ名を表示させます。

contanier-list.sh
#!/bin/bash
for contanier in `docker ps -q --format '{{.ID}},{{.Names}}'`; do

  # カンマ区切りをリスト化
  list=(${contanier//,/ })

  # リストの表示
  # echo ${list[@]}

  # コンテナIDと名前を取得
  contanier_id=${list[0]}
  contanier_name=${list[1]}

  echo ${contanier_id} ${contanier_name}

done

テストコンテナの構築

適当にNginxコンテナを10台構築します。

#!/bin/bash
# 構築するコンテナの数
num=10
# 指定した数だけコンテナを構築
for i in `seq 1 ${num}`
do
contanier_name=nginx_${i}
docker run --name ${contanier_name} -d nginx
done

構築したコンテナを確認する。

docker ps -a
CONTAINER ID   IMAGE                      COMMAND                  CREATED              STATUS              PORTS                                   NAMES
b92f31fca31f   nginx                      "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp                                  nginx_10
7e7d46aed8f5   nginx                      "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp                                  nginx_9
54ae367b6c9c   nginx                      "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp                                  nginx_8
d0881a7a8f5b   nginx                      "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp                                  nginx_7
1ad4fe86c8e7   nginx                      "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp                                  nginx_6
bccf446ebe9e   nginx                      "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp                                  nginx_5
de1638f5ed11   nginx                      "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp                                  nginx_4
e550e98095f7   nginx                      "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp                                  nginx_3
1462f40996bf   nginx                      "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp                                  nginx_2
d9659cce21fb   nginx                      "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp                                  nginx_1

スクリプト実行

./contanier-list.sh

コンテナIDとコンテナ名を確認することができました。

b92f31fca31f nginx_10
7e7d46aed8f5 nginx_9
54ae367b6c9c nginx_8
d0881a7a8f5b nginx_7
1ad4fe86c8e7 nginx_6
bccf446ebe9e nginx_5
de1638f5ed11 nginx_4
e550e98095f7 nginx_3
1462f40996bf nginx_2
d9659cce21fb nginx_1

掃除

以下のスクリプトで先ほど構築したNginxコンテナを削除できます。--filter オプションでフィルターをかけてみました。

remove.sh
#!/bin/bash
for contanier in `docker ps -q --filter "name=nginx" --format '{{.ID}}'`; do

  # カンマ区切りをリスト化
  list=(${contanier//,/ })

  # リストの表示
  # echo ${list[@]}

  # コンテナIDと名前を取得
  contanier_id=${list[0]}
 
  docker stop ${contanier_id}
  docker rm ${contanier_id}

done

削除されているか確認します。

docker ps -a

削除できていますね。

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

まとめ

稼働中の複数のコンテナの情報をシェルスクリプトで表示させることができました。
docker psコマンドの--formatオプションで色々な情報が取れるのでもう少し詳細な情報も確認することができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0