Ao usar o nó do enxame do docker na rede de sobreposição, perdi a conectividade se conectando de outro host

1

Criei meu serviço usando o seguinte comando com o docker:

docker service create --mount 
type=bind,src=/tmp/postgres,dst=/var/lib/postgresql/data 
--name dev_db 
--network mynetwork -p 5432:5432 -d postgres

O problema é que, se eu não usar a rede de sobreposição --network , posso me conectar a essa instância do docker de outro host usando apenas o cliente postgresql simples:

psql -h (ipofthehost) mydatabase -Umydatabase

mas agora que quero me conectar a ele de outro host, recebo este erro:

psql: could not connect to server: Connection refused
    Is the server running on host "ipofdehost" and accepting
    TCP/IP connections on port 5432?

O que está me dizendo que pode estar em execução, mas não pode ser visto. Verifiquei se o serviço está sendo executado com:

docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                          PORTS
8hr0qwtca230        dev_db              replicated          1/1                 postgres:latest                *:5432->5432/tcp

Eu verifiquei com ss para ver se o serviço está atendendo:

State       Recv-Q Send-Q                                               Local Address:Port                                                              Peer Address:Port              
LISTEN      0      128                                                              *:22                                                                           *:*                  
LISTEN      0      100                                                      127.0.0.1:25                                                                           *:*                  
LISTEN      0      128                                                             :::22                                                                          :::*                  
LISTEN      0      128                                                             :::5432                                                                        :::*                  
LISTEN      0      128                                                             :::12376                                                                       :::*                  
LISTEN      0      100                                                            ::1:25                                                                          :::*                  
LISTEN      0      128                                                             :::443                                                                         :::* 

Parece que está escutando por causa da linha: :::5432 , mas para mim parece que é apenas para conexões ipv6, então como posso fazer isso para ouvir conexões ipv4 ?, tudo que eu mudei foi que Eu conectei esse nó à rede de sobreposição, então não entendi por que, se eu fizesse isso para expor, as portas não estão sendo disponibilizadas publicamente.

Obrigado!

    
por VaTo 24.12.2017 / 04:41

1 resposta

1

Para definir explicitamente listen no host de sobreposição nic, primeiro identifique o endereço IP da interface de sobreposição e, em seguida, modifique seus comandos de execução para:

docker service create --mount 
type=bind,src=/tmp/postgres,dst=/var/lib/postgresql/data --name dev_db --network mynetwork -p host-overlay-ipv4:5432:5432 -d postgres

Substitua o host-overlay-ipv4 pelo endereço IPv4 de sobreposição correto.

Mais informações sobre o Docker CLI podem ser encontradas em este wiki .

    
por 27.12.2017 / 20:21