O Docker oculta silenciosamente a porta no macOS

0

Aqui está a história. Eu tenho um aplicativo (scala) que é executado em uma janela de encaixe, definido em docker-compose.yml assim:

app:
  image: dmydlarz/foobar
  ports:
    - "9000:9000"

Quando começa com o docker, ele escuta as portas de acordo com lsof -PiTCP -sTCP:LISTEN as:

com.docke   631 darek   25u  IPv4 0xd4ed8c6c9c16c231      0t0  TCP *:9000 (LISTEN)
com.docke   631 darek   26u  IPv6 0xd4ed8c6c9c20bae9      0t0  TCP localhost:9000 (LISTEN)

Então, como você pode ver, ele escuta tanto no Ip4 & Ip6.

Agora, quando executo meu aplicativo a partir da linha de comando / IntelliJ, ele inicia com êxito e também escuta a porta 9000 (!).

Quando eu listo as portas abertas, aqui está o que eu tenho:

com.docke   631 darek   25u  IPv4 0xd4ed8c6c9c16c231      0t0  TCP *:9000 (LISTEN)
com.docke   631 darek   26u  IPv6 0xd4ed8c6c9c20bae9      0t0  TCP localhost:9000 (LISTEN)
java      53995 darek  249u  IPv6 0xd4ed8c6c7ec3d8e9      0t0  TCP localhost:9000 (LISTEN)

3 processos ouvem na porta 9000, 2 deles no mesmo protocolo Ip6.

Nessa configuração, sempre o aplicativo docker está atendendo a solicitações. Sempre significa para todos os URLs que tentei:

  • curl http://[::1]:9000/...
  • curl http://127.0.0.1:9000/...
  • curl http://localhost:9000/...

Quando eu mato o aplicativo docker, as solicitações estão sendo atendidas pelo aplicativo local.

Eu forcei o aplicativo docker a ser iniciado apenas no Ip4 com o endereço specyfing de ligação:

app:
  image: dmydlarz/foobar
  ports:
    - "127.0.0.1:9000:9000"

que impedem iniciar dois processos ao mesmo tempo, mas ainda assim o comportamento anterior é totalmente desajeitado para mim.

Então eu tenho 2 perguntas:

  1. Por que o Docker está silenciosamente escondendo a porta na máquina local? Por que ele não bloqueia a inicialização do aplicativo local na mesma porta e permite que ele atenda a solicitações quando o aplicativo do docker está sendo desativado?
  2. Por que eu consegui iniciar 2 aplicativos no mesmo protocolo (ip6) e na mesma porta?
por Dariusz Mydlarz 06.08.2018 / 13:05

0 respostas