Podman: различия между версиями

Материал из ALT Linux Wiki
 
(не показано 12 промежуточных версий 6 участников)
Строка 3: Строка 3:
== Установка ==
== Установка ==
Установить {{pkg|podman}} можно следующей командой:
Установить {{pkg|podman}} можно следующей командой:
<syntaxhighlight lang="bash"># apt-get install podman</syntaxhighlight>
<syntaxhighlight lang="console"># apt-get install podman</syntaxhighlight>


== Rootless режим ==
== Rootless режим ==
Для использования podman непривилегированными пользователями, необходимо произвести ряд дополнительных действий по настройке прав:
Для использования podman непривилегированными пользователями, необходимо произвести ряд дополнительных действий по настройке прав:
# Разрешить создание пользовательских пространств имён:
# Проверить наличие разрешения на создание пользовательских пространств имён:
#: <syntaxhighlight lang="bash"># sysctl kernel.unprivileged_userns_clone=1
#: <syntaxhighlight lang="console"># sysctl kernel.unprivileged_userns_clone</syntaxhighlight>
# echo 'kernel.unprivileged_userns_clone=1' >> /etc/sysctl.d/42-podman.conf</syntaxhighlight>
# Если отсутствует, то разрешаем (устанавливаем пакет с необходимой конфигурацией)
#: <syntaxhighlight lang="console"># apt-get install sysctl-conf-userns</syntaxhighlight>
# Предоставить права на запуск исполняемых файлов {{path|/usr/bin/newuidmap}} и {{path|/usr/bin/newgidmap}} пользователям, не являющимся владельцами файла и не принадлежащим к группе владельца файла:
# Предоставить права на запуск исполняемых файлов {{path|/usr/bin/newuidmap}} и {{path|/usr/bin/newgidmap}} пользователям, не являющимся владельцами файла и не принадлежащим к группе владельца файла:
#: <syntaxhighlight lang="bash"># chmod o+x /usr/bin/newuidmap
#: <syntaxhighlight lang="console"># control newgidmap public
# chmod o+x /usr/bin/newgidmap</syntaxhighlight>
# control newuidmap public</syntaxhighlight>
# Поскольку эти исполняемые файлы обращаются к системным вызовам setuid() и setgid(), чтобы лишний раз не выдавать SUID бит, задайте этим файлам соответствующие file capabilities:
# Поскольку эти исполняемые файлы обращаются к системным вызовам setuid() и setgid(), чтобы лишний раз не выдавать SUID бит, задайте этим файлам соответствующие file capabilities:
#:<syntaxhighlight lang="bash"># setcap cap_setuid+ep /usr/bin/newuidmap
#:<syntaxhighlight lang="console"># setcap cap_setuid+ep /usr/bin/newuidmap
# setcap cap_setgid+ep /usr/bin/newgidmap</syntaxhighlight>
# setcap cap_setgid+ep /usr/bin/newgidmap</syntaxhighlight>
Если при попытке работы с podman под непривилегированным пользователем (например, "$ podman images") выдаётся ошибка "Error: kernel does not support overlay fs: 'overlay' is not supported ...", то нужно донастроить [[Fuse]]:
# Под пользователем root:
#:<syntaxhighlight lang="console"># apt-get install fuse-overlayfs
# control fusermount fuseonly
# usermod -aG fuse <your_unprivileged_user_here></syntaxhighlight>
# Далее нужно '''перезайти''' под непривилегированным пользователем и проверить, что нет ошибок, - вывод должен быть примерно такого вида:
#:<syntaxhighlight lang="console">$ fusermount -V
fusermount version: 2.9.9
$ fusermount3 -V
fusermount3 version: 3.16.2</syntaxhighlight>


Этих действий достаточно для запуска podman непривилегированными пользователями.
Этих действий достаточно для запуска podman непривилегированными пользователями.
Строка 23: Строка 35:


Для пользователей, у которых нет записей в {{path|/etc/subuid}} и {{path|/etc/subgid}}, можно создать запись с помощью команды {{cmd|usermod}}, например:
Для пользователей, у которых нет записей в {{path|/etc/subuid}} и {{path|/etc/subgid}}, можно создать запись с помощью команды {{cmd|usermod}}, например:
<syntaxhighlight lang="bash"># usermod --add-subuids 100000-165536 --add-subgids 100000-165536 имя_пользователя</syntaxhighlight>
<syntaxhighlight lang="console"># usermod --add-subuids 100000-165535 --add-subgids 100000-165535 имя_пользователя</syntaxhighlight>
Данная команда выделяет заданный диапазон UID и GID пользователю, что позволит пользователю и группе с именем пользователя запускать контейнеры Podman.
Данная команда выделяет заданный диапазон UID и GID пользователю, что позволит пользователю и группе с именем пользователя запускать контейнеры Podman.
<blockquote>В случае попытки добавить доменного пользователя, имя пользователя вносится в {{path|/etc/subuid}} и {{path|/etc/subgid}} вручную.</blockquote>


Указанный выше диапазон UID и GID уже может быть занят другим пользователем, т.к. это диапазон по умолчанию для  первого пользователя. Просмотреть занятые диапазоны можно в файлах {{path|/etc/subuid}} и {{path|/etc/subgid}}, например:
Указанный выше диапазон UID и GID уже может быть занят другим пользователем, т.к. это диапазон по умолчанию для  первого пользователя. Просмотреть занятые диапазоны можно в файлах {{path|/etc/subuid}} и {{path|/etc/subgid}}, например:
<syntaxhighlight lang="bash"># cat /etc/subuid  
<syntaxhighlight lang="console"># cat /etc/subuid  
user:100000:65536
user:100000:65536
user2:165536:65536</syntaxhighlight>
user2:165536:65536</syntaxhighlight>
Строка 33: Строка 46:


Для применения изменений в subuid и subgid необходимо выполнить команду:
Для применения изменений в subuid и subgid необходимо выполнить команду:
<syntaxhighlight lang="bash">$ podman system migrate</syntaxhighlight>
<syntaxhighlight lang="console">$ podman system migrate</syntaxhighlight>
}}
}}


== Запуск образов ==
== Запуск образов ==
Podman предоставляет совместимый с Docker интерфейс CLI, а следовательно допустимо настроить при необходимости alias docker=podman:
Podman предоставляет совместимый с Docker интерфейс CLI, а следовательно допустимо настроить при необходимости alias docker=podman:
<syntaxhighlight lang="bash"># echo "alias docker=podman" >> ~/.bashrc</syntaxhighlight>
<syntaxhighlight lang="console"># echo "alias docker=podman" >> ~/.bashrc</syntaxhighlight>


Загрузка образа из репозитория:
Загрузка образа из репозитория:
<syntaxhighlight lang="bash"># podman pull registry.altlinux.org/alt/alt</syntaxhighlight>
<syntaxhighlight lang="console"># podman pull registry.altlinux.org/alt/alt</syntaxhighlight>


Запуск контейнера из образа:
Запуск контейнера из образа:
<syntaxhighlight lang="bash"># podman run -it --name alt registry.altlinux.org/alt/alt</syntaxhighlight>
<syntaxhighlight lang="console"># podman run -it --name alt registry.altlinux.org/alt/alt</syntaxhighlight>


== Ссылки ==
== Ссылки ==
[https://docs.podman.io/en/latest/ Документация]
* [https://docs.podman.io/en/latest/ Документация]
<br />
* [https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md Настройка rootless в Podman]
[https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md Настройка rootless в Podman]
* [https://registry.altlinux.org Репозиторий образов ALT]
<br />
* [https://rutube.ru/video/7f762a78cc69a3aebae326afb0e2d917 Контейнеры docker|podman в Альт Linux: настройка и запуск.Видео]
[https://registry.altlinux.org Репозиторий образов ALT]
* [https://rutube.ru/video/0ec21a1469ee4b8b43314001925a2ba7 Podman - подготовка окружения в Альт Linux для работы с docker-контейнерами.Видео]
<br>
* [https://rutube.ru/video/124e6b160c5e9218a68f7134ec01ec32 Запуск первого контейнера из образа Python в Podman.Видео]
<br>
<br>
[[Category:Виртуализация]]
[[Category:Виртуализация]]
{{Category navigation|title=Виртуализация|category=Виртуализация|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Виртуализация|category=Виртуализация|sortkey={{SUBPAGENAME}}}}

Текущая версия от 11:03, 19 марта 2025

Инструкция по установке

Установка

Установить podman можно следующей командой:

# apt-get install podman

Rootless режим

Для использования podman непривилегированными пользователями, необходимо произвести ряд дополнительных действий по настройке прав:

  1. Проверить наличие разрешения на создание пользовательских пространств имён:
    # sysctl kernel.unprivileged_userns_clone
    
  2. Если отсутствует, то разрешаем (устанавливаем пакет с необходимой конфигурацией)
    # apt-get install sysctl-conf-userns
    
  3. Предоставить права на запуск исполняемых файлов /usr/bin/newuidmap и /usr/bin/newgidmap пользователям, не являющимся владельцами файла и не принадлежащим к группе владельца файла:
    # control newgidmap public
    # control newuidmap public
    
  4. Поскольку эти исполняемые файлы обращаются к системным вызовам setuid() и setgid(), чтобы лишний раз не выдавать SUID бит, задайте этим файлам соответствующие file capabilities:
    # setcap cap_setuid+ep /usr/bin/newuidmap
    # setcap cap_setgid+ep /usr/bin/newgidmap
    

Если при попытке работы с podman под непривилегированным пользователем (например, "$ podman images") выдаётся ошибка "Error: kernel does not support overlay fs: 'overlay' is not supported ...", то нужно донастроить Fuse:

  1. Под пользователем root:
    # apt-get install fuse-overlayfs
    # control fusermount fuseonly
    # usermod -aG fuse <your_unprivileged_user_here>
    
  2. Далее нужно перезайти под непривилегированным пользователем и проверить, что нет ошибок, - вывод должен быть примерно такого вида:
    $ fusermount -V
    fusermount version: 2.9.9
    $ fusermount3 -V
    fusermount3 version: 3.16.2
    

Этих действий достаточно для запуска podman непривилегированными пользователями.

Примечание:

Чтобы podman могли запускать непривилегированные пользователи, для каждого такого пользователя должна существовать запись конфигурации subuid и subgid. Новые пользователи, созданные после установки podman, имеют эти записи по умолчанию.

Для пользователей, у которых нет записей в /etc/subuid и /etc/subgid, можно создать запись с помощью команды usermod, например:

# usermod --add-subuids 100000-165535 --add-subgids 100000-165535 имя_пользователя

Данная команда выделяет заданный диапазон UID и GID пользователю, что позволит пользователю и группе с именем пользователя запускать контейнеры Podman.

В случае попытки добавить доменного пользователя, имя пользователя вносится в /etc/subuid и /etc/subgid вручную.

Указанный выше диапазон UID и GID уже может быть занят другим пользователем, т.к. это диапазон по умолчанию для первого пользователя. Просмотреть занятые диапазоны можно в файлах /etc/subuid и /etc/subgid, например:

# cat /etc/subuid 
user:100000:65536
user2:165536:65536

Многим образам требуется 65536 uid/gid для сопоставления. Рекомендуется выделять как минимум столько uid/gid для каждого пользователя.

Для применения изменений в subuid и subgid необходимо выполнить команду:

$ podman system migrate


Запуск образов

Podman предоставляет совместимый с Docker интерфейс CLI, а следовательно допустимо настроить при необходимости alias docker=podman:

# echo "alias docker=podman" >> ~/.bashrc

Загрузка образа из репозитория:

# podman pull registry.altlinux.org/alt/alt

Запуск контейнера из образа:

# podman run -it --name alt registry.altlinux.org/alt/alt

Ссылки