Если вы работаете с --net=host
, вы используете сетевой стек хоста, и больше нет других элементов управления Docker относительно того, как он взаимодействует с сетью.Если вы хотите прослушивать только определенный интерфейс, ваш сервер связывает (2) с адресом на нем, как и любой другой процесс, работающий непосредственно на хосте.Большинство серверных пакетов более высокого уровня имеют опцию прослушивания по определенному адресу, и вы должны настроить сервер на прослушивание только 127.0.0.1.
Использование --net=host
обычно не является наилучшей практикой.Если вы пропустите эту опцию и будете использовать стандартную сеть Docker, то опция docker run -p
будет иметь возможность привязки к определенному IP-адресу хоста.Если ваш сервер прослушивает порт 80 внутри контейнера, и вы действительно хотите, чтобы он прослушивал порт 8888 и был доступен только с текущего хоста, вы могли бы
docker run -p 127.0.0.1:8888:80 ...
(В этом последнем случае процесс внутриконтейнер должен прослушивать 0.0.0.0 или какой-либо другой эквивалентный параметр «все адреса», даже если вы не хотите, чтобы он был доступен с внешнего компьютера.)