如何使用Shell脚本获取正在启动的容器信息
動機
我想获取正在运行的多个容器的容器名称等信息,并进行了验证。
环境
-
- Ubuntu 20.04
-
- Docker version 20.10.14
- Docker Compose version v2.4.1
“脚本”
每个正在运行的容器都会显示容器ID和容器名称。
#!/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
构建测试容器
我会构建10个适当的Nginx容器。
#!/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选项进行过滤。
#!/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
总结
我已经能够使用Shell脚本显示正在运行的多个容器的信息。
通过docker ps命令的–format选项,我们可以获取各种信息,因此可以查看更详细的信息。