Выводим IP адреса в docker ps

July 27, 2021

Мне нужно иногда получать локальные адреса докер контейнеров. Да, есть команда, для получения такового:

$ 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 with local IP’s

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



Profile picture

Written by Alexander Mayorov
Full Stack CTO

© 2022