Как в docker узнать локальный ip-адрес контейнера

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

docker-compose ps

Затем получаем информацию и фильтруем нужные значения:

docker inspect service_name | grep "IPAddress"

Результат будет примерно таким:

"SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.19.0.3",

Теперь чтобы посмотреть через какой бридж выполняется соединение:

ip a | grep '172.19.0'

На выходе:

inet 172.19.0.1/16 brd 172.19.255.255 scope global br-f5b483d2e488

Существуют и более правильные решения, например, с использованием опции —format. Если контейнер подключен к дефолтной сети:

docker inspect --format {{.NetworkSettings.IPAddress}} portainer

Чтобы показать ip-адреса из всех сетей:

docker inspect mycontainer -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'

Или из конкретной сети mycontainer_default:

docker inspect --format {{.NetworkSettings.Networks.mycontainer_default.IPAddress}} mycontainer

Также можно указать имена нескольких контейнеров через пробел. Подробнее о синтаксисе форматирования можно почитать здесь: https://docs.docker.com/engine/reference/commandline/inspect/