LINUX.ORG.RU
решено ФорумAdmin

Podman rootless и сети

 , ,


0

2

Доброго времени суток, уважаемые! Раньше всё как-то с докером работал и особо не погружался под капот, а сейчас появилась необходимость переходить на podman в rootless и начинаю наступать на грабли. Если запускать контейнер от рута или в привелегированном режиме, то создётся бридж cni-podman0 и контейнер нормально взаимодействует с другими подсетями, виртуальными машинами и внешним миром. А если запускать в rootless (под непривелигированным пользователем), то мост не создаётся автоматически. Конечно, наверно, можно создавать сеть руками, указывать её в параметрах запуска контейнера (я не проверял) и всё будет хорошо, но есть подозрение, что что-то можно подкрутить и всё будет работать как нужно. Подскажите пожалуйста можно ли как-то решить эту ситуацию или режим rootless как раз не предназначен для этого?

ПО:

  • Debian Linux 12
  • Kernel 6.1.0-25-amd64
  • podman 4.3.1
  • crun 1.8.1
  • conmon 2.1.6
  • slirp4netns 1.2.0

Параметры дефолтной сети podman:

{
  "cniVersion": "0.4.0",
  "name": "podman",
  "plugins": [
    {
      "type": "bridge",
      "bridge": "cni-podman0",
      "isGateway": true,
      "ipMasq": true,
      "hairpinMode": true,
      "ipam": {
        "type": "host-local",
        "routes": [{ "dst": "0.0.0.0/0" }],
        "ranges": [
          [
            {
              "subnet": "10.88.0.0/16",
              "gateway": "10.88.0.1"
            }
          ]
        ]
      }
    },
    {
      "type": "portmap",
      "capabilities": {
        "portMappings": true
      }
    },
    {
      "type": "firewall"
    },
    {
      "type": "tuning"
    }
  ]
}
★★★

Покажите тогда и /etc/containers/containers.conf, они многое переделали после этого то -то, то - это не запускается, например slirp4netns - может быть отключен, из чего у вас может и не подниматься ваша сеть, или настройки cgroup

Silerus ★★★★
()

Открой документацию, там написано про возможность использовать netavark вместо тормозного slirp для rootless-контейнеров. Насколько оно работоспособно — сказать не могу, не пользовался.

anonymous
()
Ответ на: комментарий от Silerus

Вышел вот на эту статью link.

Там написано много интересного, в том числе:

When using Podman as a rootless user, the network setup is automatic. Technically, the container itself does not have an IP address, because without root privileges, network device association cannot be achieved. Moreover, pinging from a rootless container does not work because it lacks the CAP_NET_RAW security capability that the ping command requires. 

В итоге я кучу всего перепробовал, но, видимо, помогло вот это:

When rootless containers are run, network operations will be executed inside an extra network namespace. To join this namespace, use podman unshare --rootless-netns.

Всем спасибо!

nuxster ★★★
() автор топика
Ответ на: комментарий от nuxster

у меня внутри одного pod контейнеры прекрасно видят друг друга по именам контейнера, например у меня поднят postgresql и adminer, оба видны снаружи по своим портам, а между собой по имени контейнера

Silerus ★★★★
()