172 похожих чатов

Коллеги, доброго времени суток! Подскажите пожалуйста по следующему вопросу. Исходные

данные:
Платформа: Linux Debian 10
Docker: последней версии (с оф. сайта, установлен неделю назад) + docker-compose

Нужно запустить 10 контейнеров, каждый из которых использует стандартный порт. Для примера, пусть это будет Nginx (веб сервер, порт 80). На выходе, контейнер должен висеть на том же самом порту.

Очевидное решение — задать контейнерам разные статические IP, по которым с хост-машины можно будет обращаться к этим контейнерам.

Собственно, вопрос заключается в том, какой тип сети и какие параметры нужно указать в docker-compose.yml, что бы добиться желаемого результата? Основное требование к решению — контейнеры должны быть доступны с хост машины, на которой они и запущены.

21 ответов

9 просмотров

самое примитивное - запустить 11-тый контейнер с тем же nginx-ом на борту, который будет раскидывать обращения по остальным контейнерам. а то... реализовать это теоретически можно, но! вручную придется прописывать пачку правил в iptables и добавлять пачку ip адресов на эту машину. кмк 11 контейнер - проще.

контейнеры между собой общаются по именам

Evgeniy-Wolf Автор вопроса
Евгений Генеральчик
самое примитивное - запустить 11-тый контейнер с т...

благодарю за помощь, я на самом деле я именно так и подумал (как вариант решения), но прокладка из лишних прокси — не слишком хорошая в целом идея, к тому же, Nginx в данном случае просто как пример, там могут быть буквально любые серверы

macvlan/ ipvlan не пробовал ?

Evgeniy-Wolf Автор вопроса
George Gaál
macvlan/ ipvlan не пробовал ?

пробовал, но что-то не получилось... Либо контейнеры на 0.0.0.0 биндятся сами, либо я вообще открытых портов с их адресами не вижу... В этот момент я подумал, что что-то делаю не так, отсюда собственно и произошел вопрос

а что за 10 контейнеров то? какой у них функционал, зачем тебе их по разным сетям раскидывать?

Evgeniy-Wolf Автор вопроса
Nazar
а что за 10 контейнеров то? какой у них функционал...

это риторический в данном случае вопрос, в моём случае это может быть в буквальном смысле что угодно: физически разные БД работающие на одном порту (MySQL, MardiaDB, Percona и пр.) и их клиенты соотв., всякие веб-серверы и масса других серверных приложений, "идеальная" архитектура построения которых была бы именно в таком виде (с разными IP)

Evgeniy Wolf
это риторический в данном случае вопрос, в моём сл...

Не погоди, просто пробрасывай на разные порты

Evgeniy-Wolf Автор вопроса
Nazar
Не погоди, просто пробрасывай на разные порты

я так и сделал уже, но тогда возникает необходимость "прокладки" в виде реверс-прокси, хотел от нее избавиться

Evgeniy Wolf
это риторический в данном случае вопрос, в моём сл...

это то что называется "лень на клиенте порт прописывать пусть в дефолтный стучится"?

Evgeniy-Wolf Автор вопроса
Евгений Генеральчик
это то что называется "лень на клиенте порт пропис...

одна из проблем в том, что браузеры например всегда стучатся в дефолтный порт, хотя, насколько я помню, на уровне того же DNS'а порты можно указать, но браузеру пофиг

Evgeniy-Wolf Автор вопроса
Nazar
а реверс прокси зачем

что бы по разным портам раскидывать соотв.

Evgeniy Wolf
я так и сделал уже, но тогда возникает необходимос...

тогда возникает другой риторический вопрос. а зачем 10 одинаковых сервисов, которые не нужно балансировать?

Evgeniy Wolf
одна из проблем в том, что браузеры например всегд...

Ой, только в браузере можно указать порт, куда обращаться. И в этих практиках нет ничего плохого

Eugene Buravtsov
тогда возникает другой риторический вопрос. а заче...

сервисы судя по всему разные, но поднимаются на одних и тех же портах :/

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта