Linux Labs

Контейнеры: Docker и compose / Ступень 7 из 11

Сеть контейнеров: имена и порты

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 1 из 6 · на машине · 6 мин

Приложение не находит базу

Чему научишься

  • Находить по журналу и /etc/resolv.conf контейнера, почему имя соседа не находится.
  • Связывать контейнеры своей сетью Docker, чтобы они находили друг друга по имени.
  • Выбирать адрес и порт для подключения из контейнера к соседу и с хоста.

Разработчики отдали два контейнера: приложение app и учебную базу db. База слушает порт 5432 и на каждое подключение отвечает строкой db: ok. Приложение раз в три секунды подключается к ней по имени db и пишет итог в журнал. Оба контейнера запущены, а приложение жалуется, что базы нет.

Посмотри сам. Команды docker здесь, как и в прошлых уроках, идут через sudo. «Начать» запустит оба контейнера.

Упражнение · посмотреть

Прочитай журнал приложения

Проверь, что оба контейнера работают, и прочитай журнал app.

Сначала предположи

Оба контейнера в статусе Up. Что app пишет в журнал?

Теперь начни упражнение, выполни команду и сверь прогноз с выводом.

Войти и начать Машина доступна после входа
Проверь себя 1 вопрос

Что значит bad address 'db' в журнале app?

  • Файрвол мешает подключению к адресу, а адреса здесь нет: nc не нашёл, куда подключаться.

  • Отказ бывает, когда адрес уже есть и подключение началось. bad address значит, что до подключения дело не дошло: имя не нашлось.

  • sudo docker ps показывает db в статусе Up: база работает.

bad address 'db' — nc не нашёл адрес по имени db.

Ubuntu 24.04
Загрузка…