Добрый день.
docker при перезапуске контейнера каждый раз генерирует для него новый MAC и IP.
MAC можно зафиксировать при помощи ключа --mac-address, а вот как зафиксировать IP я не смог найти.
Хочу попробовать запустить в докере php-fpm, а вот городить огород с именованием хоста контейнера и последующим его резолвингом, чтобы мой nginx всегда знал где у него бэкэнд, очень не хочется.
Прошу подсказать, и ли ткнуть в нужное место в мануале.
либо я не до конца понимаю суть service discovery, либо я буду должен чем то третьим отслеживать сам факт перезапуска контейнера, чтобы определить факт смены IP адреса.
ну и на все это будет уходить время.
1. Сервер, раздающий с помощью http+json или dns адреса сервисов.
2. Регистрация сервиса на сервере, можно вручную скриптом или https://github.com/progrium/registrator автоматически на основании метаданных о запущенном контейнере.
Еще один вариант использовать оркестрацию с помощью fig, в нем легче организовать линковку между контейнерами.
pumbaEO: нашел еще вариант habrahabr.ru/post/215653 но в моем случае - это из пушки по воробьям...
но, видимо выхода нет, придется копать в эту сторону
begemot_nn: как только начнете использовать больше контейнеров чем nginx + php-fpm поймете, что этим надо как-то управлять. У меня вообще страшная 1с + apache +postgres + haproxy(для балансирвоки) + vnc сервер и все это в разных контейнерах и друг с другом связываются.
p.s.: по сути там две команды, которые очень просто прописать в автозагузку, единственное я еще в dnsmasq добавляю правило, для поддомена.
begemot_nn: если мне не нужна PTR запись для доменного имени, тогда использую fig, если есть необходимость в обратном преобразовании(hadoop, 1c) то использую skydns версии 2 и жду еще новый релиз consul.io
pumbaEO: ок. спасибо. настрою пожалуй пока skydns, и буду внимательно изучать линковку контейнеров.
Вы, насколько я понял, с докером серьезно разбирались? Подскажете, кроме официального мануала и хабра, есть у вас какие то сайты, которыми вы пользуетесь по докеру?
с линковкой я пока не очень понимаю идеологию... сейчас у меня три контейнера (вернее три роли) nginx -> php-fpm -> sql
Они общаются по сети, как если бы это были отдельные серваки и вопрос только один, научить их друг друга узнавать по именам, а если я применю линковку, и перезапущу только контейнер с php-fpm это приведет к перезапуску всех слинкованных контейнеров или нет? и линковка при этом не развалится?
Суть то всей этой конструкции - прийти к возможности менять на ходу бэкэнды не останавливая сервис.