Я думаю, что вы хотите достичь sh в основном делается путем изменения опции общего ресурса по умолчанию для pods.
В общем случае общий доступ к Pods cgroup,ipc,net,uts
. Облегчение межконтейнерного общения. Если этот параметр включен (или, скорее, не изменять его), вы не сможете портировать контейнеры карт в модуль, решив в: Error: cannot set port bindings on an existing container network namespace
Как и в случае со статусом от tgogos, контейнеры без корней всегда совместно используют одну и ту же сеть. Это достигается проектом slirp4netns
. Проверьте этот сайт для получения дополнительной информации о сети с контейнерами.
Я не совсем понимаю, почему вы используете sudo
, но вы также можете создать свою собственную сеть с помощью sudo podman network create <networkname>
и назначить контейнеры этому сеть с флагом --network <networkname>
.
Решение ваших проблем
Создание модуля, который не разделяет сетевое пространство имен и, следовательно, отображение портов будет на основе контейнера, а не на основе модуля.
- Создать модуль
podman pod create --name servers --share cgroup,ipc,uts
- Назначить контейнеры с портами для созданного модуля
- Теперь вы можете свободно назначать порты контейнерам, используя apache / nginx или другие, чтобы все работало как нужно. Как назначить несколько экземпляров для apache
podman run -dt --pod servers --rm --name web -p 80:80 $WEB_PATH php:7.2-apache
podman run -dt --pod servers --rm --name mysql --env MYSQL_ROOT_PASSWORD=iamroot -v /var/lib/mysql:/var/lib/mysql:Z -p 8080:8080 mysql:8
podman run -dt --pod servers --rm --name pma -p SOMEPORT:80 phpmyadmin/phpmyadmin:5
- Поиск IP
- Rootful-режим
sudo podman inspect -f "{{.NetworkSettings.IPAddress}}" <containername>
- Безрукий режим
- проверка
ip addr show
для любой virtual bridge
, или если уже создана cni podman
сеть - или отметьте
hostname -I
, это будет показывать только IP-адреса, но любой из них должен работать
- Подключение к контейнеру базы данных
- Ваша база данных теперь должна быть доступна по IP-адресу, который вы получили на Шаг 3 и порт от Шаг 2 может быть чем-то вроде
- сеть podman
10.89.0.1:8080
- virbr0
192.167.133.1:8080
Обратите внимание, что шаги 1-2 также можно запускать как sudo
, но мне лично не нравится иметь контейнеры / контейнеры sudo, так как для podman прекрасно иметь пользовательские пространства и контейнеры без root. Позвольте системным службам управлять перезапусками et c.