Docker предоставляет способ сопоставления портов между контейнером и хостом.
В соответствии с официальной документацией также возможно упоминать host-ip при сопоставлении портов.
-p 192.168.1.100:8080:80
- сопоставить TCP-порт 80 в контейнере с портом 8080 на хосте Docker для соединений с IP-адресом хоста 192.168.1.100
.
Я попробовал эту опцию, чтобы выяснить, в чем разница с хостом или без него.ip.
- Использование только
-p 80:80
$ docker run -itd -p 80:80 nginx:alpine
$ curl localhost:80
$ curl 127.0.0.1:80
$ curl 0.0.0.0:80
$ curl 192.168.0.13:80
$ ps -ef | grep docker-proxy
16723 root 0:00 /usr/local/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8080 -container-ip 172.17.0.1 -container-port 80
$
Все команды curl возвращают вывод.
- Использование host-ip подобно
-p 192.168.0.13:80:80
$ docker run -itd -p 192.168.0.13:80:80 nginx:alpine
$ curl localhost:80
curl: (7) Failed to connect to localhost port 80: Connection refused
$ curl 127.0.0.1:80
curl: (7) Failed to connect to 127.0.0.1 port 80: Connection refused
$ curl 0.0.0.0:80
curl: (7) Failed to connect to 0.0.0.0 port 80: Connection refused
$ curl 192.168.0.13:80 # return output
$ ps -ef | grep docker-proxy
4914 root 0:00 /usr/local/bin/docker-proxy -proto tcp -host-ip 192.168.0.13 -host-port 80 -container-ip 172.17.0.2 -container-port 80
$
Не удалось выполнить все команды curl
, кроме 192.168.0.13:80
.
Есть ли какие-либо другие отличия, кроме той, о которой я упоминал здесь.
Интересно, когда использовать отображение портов на основе host-ip.Есть ли варианты использования?