gpt4 book ai didi

bash - 在 shell 脚本中处理 docker 事件

转载 作者:行者123 更新时间:2023-12-02 18:19:01 25 4
gpt4 key购买 nike

我想捕捉 docker 事件并在发生某些事情时做一些事情。有很多方法可以“获取/打印事件”:

# With curl
curl --unix-socket /var/run/docker.sock http:/v1.40/events

# With nc
echo -e "GET /events HTTP/1.0\r\n" | nc -U /var/run/docker.sock

但是有没有办法连续监听并处理每一行/事件?例如:

while EVENT ?magic?; do
ACTION=$(echo $EVENT | jq .Action )
if [ $ACTION -eq "start" ]; then ....; fi
done

解决方案

在@Adiii 回答之后,一个简短的解决方案:

#!/bin/bash

function handle {
# Check the line is a JSON line:
if [[ ${1:0:1} == "{" ]]; then

# ... You can do here anything ...

# Print: "LOG $line", "LOG" is green
echo -e "\033[32;1mLOG\033[0m $line"
fi
}

echo -e "GET /events HTTP/1.0\r\n" | nc -U /var/run/docker.sock | while read line; do handle $line; done;

最佳答案

你可以试试docker events它不断地控制台 docker 事件。

docker events 

例如,如果您只是对 grep container started 感兴趣事件以下命令将起作用,或者您可以改进以下脚本。
#!/bin/bash
docker events | while read line; do if [[ ${line} = *"start"* ]];then echo " container started ${line}" ;fi ; done

关于bash - 在 shell 脚本中处理 docker 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58289310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com