Podman: различия между версиями
Vik 59 (обсуждение | вклад) (→Ссылки) |
|||
(не показано 12 промежуточных версий 6 участников) | |||
Строка 3: | Строка 3: | ||
== Установка == | == Установка == | ||
Установить {{pkg|podman}} можно следующей командой: | Установить {{pkg|podman}} можно следующей командой: | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="console"># apt-get install podman</syntaxhighlight> | ||
== Rootless режим == | == Rootless режим == | ||
Для использования podman непривилегированными пользователями, необходимо произвести ряд дополнительных действий по настройке прав: | Для использования podman непривилегированными пользователями, необходимо произвести ряд дополнительных действий по настройке прав: | ||
# | # Проверить наличие разрешения на создание пользовательских пространств имён: | ||
#: <syntaxhighlight lang=" | #: <syntaxhighlight lang="console"># sysctl kernel.unprivileged_userns_clone</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=" | #: <syntaxhighlight lang="console"># control newgidmap public | ||
# | # control newuidmap public</syntaxhighlight> | ||
# Поскольку эти исполняемые файлы обращаются к системным вызовам setuid() и setgid(), чтобы лишний раз не выдавать SUID бит, задайте этим файлам соответствующие file capabilities: | # Поскольку эти исполняемые файлы обращаются к системным вызовам setuid() и setgid(), чтобы лишний раз не выдавать SUID бит, задайте этим файлам соответствующие file capabilities: | ||
#:<syntaxhighlight lang=" | #:<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=" | <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=" | <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=" | <syntaxhighlight lang="console">$ podman system migrate</syntaxhighlight> | ||
}} | }} | ||
== Запуск образов == | == Запуск образов == | ||
Podman предоставляет совместимый с Docker интерфейс CLI, а следовательно допустимо настроить при необходимости alias docker=podman: | Podman предоставляет совместимый с Docker интерфейс CLI, а следовательно допустимо настроить при необходимости alias docker=podman: | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="console"># echo "alias docker=podman" >> ~/.bashrc</syntaxhighlight> | ||
Загрузка образа из репозитория: | Загрузка образа из репозитория: | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="console"># podman pull registry.altlinux.org/alt/alt</syntaxhighlight> | ||
Запуск контейнера из образа: | Запуск контейнера из образа: | ||
<syntaxhighlight lang=" | <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/ Документация] | ||
* [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] | ||
* [https://rutube.ru/video/7f762a78cc69a3aebae326afb0e2d917 Контейнеры docker|podman в Альт Linux: настройка и запуск.Видео] | |||
[https://registry.altlinux.org Репозиторий образов ALT] | * [https://rutube.ru/video/0ec21a1469ee4b8b43314001925a2ba7 Podman - подготовка окружения в Альт Linux для работы с docker-контейнерами.Видео] | ||
* [https://rutube.ru/video/124e6b160c5e9218a68f7134ec01ec32 Запуск первого контейнера из образа Python в Podman.Видео] | |||
[[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 непривилегированными пользователями, необходимо произвести ряд дополнительных действий по настройке прав:
- Проверить наличие разрешения на создание пользовательских пространств имён:
# sysctl kernel.unprivileged_userns_clone
- Если отсутствует, то разрешаем (устанавливаем пакет с необходимой конфигурацией)
# apt-get install sysctl-conf-userns
- Предоставить права на запуск исполняемых файлов /usr/bin/newuidmap и /usr/bin/newgidmap пользователям, не являющимся владельцами файла и не принадлежащим к группе владельца файла:
# control newgidmap public # control newuidmap public
- Поскольку эти исполняемые файлы обращаются к системным вызовам 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:
- Под пользователем root:
# apt-get install fuse-overlayfs # control fusermount fuseonly # usermod -aG fuse <your_unprivileged_user_here>
- Далее нужно перезайти под непривилегированным пользователем и проверить, что нет ошибок, - вывод должен быть примерно такого вида:
$ 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