Docker сети за 5 минут: как контейнеры находят друг друга
Почему приложение в контейнере не видит базу по localhost? Разбираем сети Docker с нуля: как устроена сеть контейнера, чем своя сеть лучше стандартной, как работает встроенный DNS, как правильно публиковать порты и что делать, если контейнеры не видят друг друга. Таймкоды: 0:00 Docker сети 0:05 Проблема: приложение не видит базу 0:24 Что внутри: network namespace, veth, мост и NAT 0:50 Драйверы: bridge, host, none, overlay, macvlan 1:10 Сеть по умолчанию bridge и её ограничения 1:32 Своя сеть и встроенный DNS 1:56 Изоляция: frontend-net и backend-net 2:18 Публикация портов: флаг -p и EXPOSE 2:47 Из контейнера на хост: host.docker.internal 3:07 Особые драйверы: host и none 3:31 Несколько серверов: overlay и macvlan 3:52 Docker Compose: сеть из коробки 4:14 Если контейнеры не видят друг друга: диагностика 4:39 Главное и шпаргалка Шпаргалка: docker network create mynet — создать сеть docker run --network mynet … — запустить контейнер в сети docker run -p 127.0.0.1:8080:80 … — опубликовать порт только локально docker network ls — список сетей docker network inspect mynet — кто подключён и с какими адресами docker network connect mynet web — подключить работающий контейнер docker run --add-host=host.docker.internal:host-gateway … — доступ к хосту на Linux Главное: 1. Своя сеть вместо стандартной. 2. Обращение по имени контейнера, а не по IP-адресу. 3. Наружу — только нужные порты. 4. localhost внутри контейнера — это сам контейнер. Озвучка: Silero TTS (CC BY-NC 4.0). #docker #докер #devops #контейнеры #сети #dockercompose #backend #программирование
Название:
Docker сети за 5 минут: как контейнеры находят друг друга
Категория:
Разное