Когда я настраиваю внутреннюю сеть в моем файле docker-compose
, отображение портов с помощью опции ports
больше не будет работать.
Давайте рассмотримследующий docker-compose.yml
файл:
version: '3'
services:
registry:
image: registry:2
ports:
- "127.0.0.1:5000:5000"
networks:
- internal
networks:
internal:
internal: true
Когда я запускаю его с internal: false
, все в порядке, и порт 5000 будет сопоставлен с хостом.Когда я запускаю его с параметром internal: true
, порт больше не отображается:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
de6412f692e7 registry:2 "/entrypoint.sh /etc…" 10 minutes ago Up 10 minutes registry_registry_1
Однако я все равно могу получить доступ к порту через внутреннюю сеть с хоста:
$ docker-compose exec registry ip addr
[...]
inet 172.23.0.2/16 [...]
$ curl -v 172.23.0.2:5000
[...]
> GET / HTTP/1.1
[...]
< HTTP/1.1 200 OK
[...]
Так что не должно быть технической причины, по которой docker-proxy
не может прокси порт контейнера передать хосту или я что-то пропустил?