Мне нужно иногда получать локальные адреса докер контейнеров. Да, есть команда, для получения такового:
$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $container_id
Но каждый раз такое набирать, да еще и помнить...
Да, можно сделать алиас или функцию:
#!/usr/bin/env bash
function dockerip() {
docker inspect -f ‘{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ ”$@”
}
dockerip container_name
dockerip container_id
Но мне хочется сразу чтобы в выводе команды docker ps был локальный IP
Собственно я для себя написал простейшую обертку dockerps, которой пользуюсь вместо docker ps:
#!/usr/bin/env bash
function dockerip {
docker inspect -f
‘{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ ”$@”
}
printf ’%*s\n’ ”${COLUMNS:-$(tput cols)}” ” | tr ’ ’ =
#seq -s- $COLUMNS|tr -d ’[:digit:]’
i=0
docker ps | while read s
do
if [ 0 = $i ]
then
echo -e ”| $s\tLocal IP”
printf ’%*s\n’ ”${COLUMNS:-$(tput cols)}” ” | tr ’ ’ -
((i=i+1))
else
uid=$(echo $s | awk ‘{print $1}’)
localip=dockerip $uid
if [ ! -z “$localip” ]
then
echo -e ”| $s\t$localip”
else
echo -e ”| $s\tlocalhost”
fi
fi
done
printf ’%*s\n’ ”${COLUMNS:-$(tput cols)}” ” | tr ’ ’ _
#EOF#
Вывод такой функции выглядит точно так же как оригнал, но в конце дописываются локальные IP адреса:

Далее все это можно зарядить в алиас или еще куда и пользоваться кастомной командой dockerps