Não é possível obter comunicação entre dois contêineres rootfull com podman

Não é possível obter comunicação entre dois contêineres rootfull com podman

Tenho dois contêineres nginx em execução.

Um está escutando na porta 80 e o outro 8080.

Aqui está como eu os executo:

sudo podman run --rm \
 -t \
 -p 8080:80 \
 --publish-all \
 --name nginx-two \
 -v ./html2/:/usr/share/nginx/html \
 -v ./html2/conf/default.conf:/etc/nginx/conf.d/default.conf \
 -d nginx

O segundo:

sudo podman run --rm -t -p 80:80 --name nginx -v ./html/:/usr/share/nginx/html -v ./html/conf/conf.d:/etc/nginx/conf.d -d nginx

Configuração NGiNX:

location / {
    proxy_pass http://10.88.0.37:8080;
}

Eu também tentei:

location / {
    proxy_pass http://127.0.0.1:8080;
}

Esta configuração é usada pelo --name=nginxcontêiner.

Aqui está o erro que recebo:

2020/01/26 15:33:05 [error] 8#8: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 10.88.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "localhost"
10.88.0.1 - - [26/Jan/2020:15:33:05 +0000] "GET / HTTP/1.1" 502 157 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0" "-"

Existe uma maneira de fazer com que esses contêineres se comuniquem entre si?

Eu também tentei usar --pod. Mas então recebi este erro:

Error: cannot set port bindings on an existing container network namespace

Responder1

Você não deve usar --publish-all, pois a página man do podman-run indica que isso publica todas as portas expostas em portas aleatórias da interface do host. A -popção é, portanto, suficiente.

Criar uma rede dedicada onde ambos os contêineres estariam poderia ajudar com o seu problema. Você poderia então referenciá-la usando a --network=network-idopção do runcomando.

Ao usar pods, os mapeamentos de portas devem ser definidos no próprio pod, e não nos contêineres desse pod:

podman pod create --name mypod -p 80:80

Não seria possível rodar em um único pod com duas instâncias nginx devido a portas 80 conflitantes. (usa as portas expostas da imagem)

A Red Hat publicou uma boa explicação:https://www.redhat.com/sysadmin/container-networking-podman

informação relacionada