intermediate

Сети

Соединяйте контейнеры через изолированные bridge-сети, имена сервисов, публикацию портов и явные границы с хостом.

Сети Docker дают контейнерам DNS-имена и изолированное общение. В Compose сервисы обычно вызывают друг друга по имени сервиса во внутренней bridge-сети; доступ с хоста — через осознанную публикацию портов.

					services:
  api:
    build: .
    ports:
      - "3000:3000"
  db:
    image: postgres:16
    # без publish на хост — только внутри сети
				

Внутри контейнера `localhost` — это сам контейнер, не хост и не соседние сервисы. Используйте имя сервиса (`postgres`, `redis`) как hostname в сети compose.

На интервью: bridge-сети, published ports, путаница с localhost, DNS-имена и разделение внутреннего и публичного трафика.

Типовые ошибки: публикация портов БД или admin UI на хост; `127.0.0.1` для зависимостей внутри compose.

Компромисс — удобная отладка с хоста (много published ports) против меньшей attack surface и реалистичной сети.

Чеклист:

  • Внутренние вызовы по именам сервисов.
  • Публиковать только нужные порты.
  • Разделять внутренний и внешний трафик.
  • Документировать URL на хосте vs внутри сети.