Вы настроили процесс nginx для запуска в пространстве имен сети хоста --net host
. В этом режиме вы не настраиваете переадресацию портов с хоста в контейнерную сеть (например, -p 80:80
). Если бы вы сделали переадресацию портов, вы бы увидели процесс докера на хосте, который перенаправляет на тот же порт в пространстве имен контейнера для процесса nginx.
Имейте в виду, что контейнеры - это метод для запуска приложения с параметрами ядра для таких вещей, как пространство имен, это не виртуальная машина, работающая под отдельной ОС, поэтому вы увидите запущенные процессы и порты, открытые непосредственно на хосте.
Вот пример того, как это выглядело бы, если бы вы перенаправили порт вместо использования пространства имен сети хоста, и как вы также можете посмотреть на пространство имен сети внутри контейнера:
$ docker run --rm -d -p 8000:80 --name mynginx nginx
d177bc43166ad59f5cdf578eca819737635c43b2204b2f75f2ba54dd5a9cffbb
$ sudo ss -tuap 'sport = :8000'
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 :::8000 :::* users:(("docker-proxy",pid=25229,fd=4))
$ docker run -it --rm --net container:mynginx --pid container:mynginx nicolaka/netshoot ss -tuap 'sport = :80'
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 *:http *:* users:(("nginx",pid=1,fd=6))
У процесса docker-proxy
есть способ по умолчанию, который Docker перенаправляет порт в контейнер.