Не удалось установить связь между двумя контейнерами rootfull с помощью podman

У меня запущено два контейнера nginx.

Один прослушивает порт 80, другой 8080.

Вот как я их запускаю:

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

Второй:

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

Конфигурация NGiNX:

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

Я также пробовал:

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

Эта конфигурация используется контейнер - name = nginx .

Вот ошибка, которую я получаю:

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" "-"

Есть ли способ заставить эти контейнеры взаимодействовать друг с другом?

Я также пробовал использовать - pod . Но потом возникла такая ошибка:

Error: cannot set port bindings on an existing container network namespace
0
задан 26 January 2020 в 17:42
1 ответ

Вы не должны использовать - publish-all , поскольку страница руководства podman-run указывает, что это публикует все открытые порты на случайные порты интерфейса хоста. Следовательно, достаточно параметра -p .

Создание выделенной сети, в которой могут использоваться оба контейнера, может помочь в решении вашей проблемы. Затем вы можете указать на нее, используя параметр - network = network-id команды run . .

При использовании модулей сопоставления портов должны определяться на самом модуле, а не в контейнерах внутри этого модуля:

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

Было бы невозможно запустить в одном модуле с двумя экземплярами nginx из-за конфликта портов 80. (он использует открытые порты изображения)

Red Hat опубликовала хорошее объяснение: https://www.redhat.com/sysadmin/container-networking-podman

0
ответ дан 28 April 2020 в 20:48

Теги

Похожие вопросы