Как найти ID docker-сети для каждой службы docker-compose, запущенной в текущем каталоге

Выполните следующую команду в каталоге, где находится docker-compose.yml:

docker_network_ids.sh
docker-compose -f $(find . -name 'docker-compose.yml' -type f) ps -q | xargs -I {} docker inspect --format '{{.Name}}: {{range .NetworkSettings.Networks}}{{.NetworkID}}{{end}}' {}

Пример вывода:

docker_network_ids_output.txt
/myservice-server-1: 3b533d2074e7230426adf0d269b399d356066130719ffd3ef68d6d492f3757f6
/myservice-ui-1: 3b533d2074e7230426adf0d269b399d356066130719ffd3ef68d6d492f3757f6

Разбор команды:

  • docker-compose -f $(find . -name 'docker-compose.yml' -type f) ps -q: Эта часть находит все файлы docker-compose.yml в текущем каталоге и его подкаталогах и запускает docker-compose ps -q для каждого из них. Эта команда выводит ID запущенных контейнеров для каждой службы, определённой в файлах Docker Compose.
  • xargs -I {} docker inspect --format '{{.Name}}: {{range .NetworkSettings.Networks}}{{.NetworkID}}{{end}}' {}: Эта часть берёт ID контейнеров, выведенные предыдущим шагом, и запускает docker inspect для каждого из них. Она извлекает имя контейнера и информацию о его Ethernet-интерфейсе с использованием пользовательского формата. Она форматирует вывод как “ServiceName: NetworkID.”

Check out similar posts by category: Docker