扱っているdocker serviceの数が3桁とかになってくると、このnodeに依存しているserviceはどれだっけ? というような事を把握するのが大変になってきます。サービスの現在状態がローカルに存在してれば適当にgrepして探せるのですけど、docker service inspect して回らないといけないので大変です。
ということで、全てのserviceのinspect --prettyを列挙する以下のようなスクリプトを作りました。--prettyのほうが行志向なのでgrepとの相性が良いです。
ds_all.sh [-q]
# !/bin/sh
NAMES=`docker service ls | tail -n +2 | awk '{print $2}' | sort`
n=0
N=`echo "$NAMES" | wc -l | bc`
for I in $NAMES; do
n=`expr $n + 1`
if [ "$1" != "-q" ]; then
echo "** $I ** $n/$N" 1>&2
fi
docker service inspect --pretty $I | awk "{print \"$I: \"\$0}"
done
ds_all.sh | grep hostname とかやると特定のhostにConstraintsが設定されているserviceが分かります。
ちなみに、現時点で dockerのservice formatterにtypoがあり、ConstraintsであるべきところがContraintsになっているので
grep Constraints してもマッチしなくて困りました。