Ответ
Чтобы узнать, к каким Docker-сетям подключен контейнер, используется команда docker inspect с фильтрацией. Это важно для диагностики проблем с сетевым взаимодействием между сервисами.
1. Основной способ — получить список имен сетей:
docker inspect <container_name_or_id> --format='{{range $net, $conf := .NetworkSettings.Networks}}{{$net}} {{end}}'
# Пример вывода: bridge custom_overlay_net
2. Детальная информация по каждой сети (IP, Gateway, MAC):
docker inspect <container_name_or_id> --format='{{json .NetworkSettings.Networks}}' | jq .
Если jq не установлен, можно использовать grep:
docker inspect <container_name_or_id> | grep -A 15 "Networks"
3. Контекст и практика:
По умолчанию контейнер подключается к сети bridge. В продакшене я использую пользовательские сети (особенно overlay для Swarm/Kubernetes) для изоляции трафика. Чтобы увидеть все доступные сети:
docker network ls
Пример из реального кейса: При проблеме, когда контейнер приложения не мог достучаться до БД, я проверил их сети:
docker inspect my_app --format='{{.NetworkSettings.Networks}}'
docker inspect postgres_db --format='{{.NetworkSettings.Networks}}'
Оказалось, БД была в сети db_network, а приложение — только в bridge. Решением стало подключение приложения к нужной сети: docker network connect db_network my_app.