Версия: 4.0.1-2
Podman - инструмент для управления контейнерами в операционной системе Linux. Он предназначен для создания, запуска, управления и поддержания контейнеров.
Возможности Podman:
Контактная информация:
Официальный сайт
Проект GitHub
Разработчик:
Dan Walsh
Лицензия:
Apache
Синтаксис:
podman [options] [command]
Доступные команды:
Команда | Описание |
---|---|
attach | Присоединиться к запущенному контейнеру |
auto-update | Автоматическое обновление контейнеров в соответствии с их политикой автообновления |
build | Собрать образ, используя инструкции из Containerfiles |
commit | Создать новый образ на основе измененного контейнера |
container | Управление контейнерами |
cp | Копировать файлы/папки между контейнером и локальной файловой системой |
create | Создать, но не запускать контейнер |
diff | Отобразить изменения в файловой системе объекта |
events | Показать события Podman |
exec | Запустить процесс в запущенном контейнере |
export | Экспортировать содержимое файловой системы контейнера как tar-архив |
generate | Генерировать структурированные данные на основе контейнеров, подов или томов |
healthcheck | Управление проверками состояния контейнеров |
help | Справка о любой команде |
history | Показать историю указанного образа |
image | Управление образами |
images | Список образов в локальном хранилище |
import | Импортировать tar-архив для создания образа файловой системы |
info | Отобразить информацию о системе Podman |
init | Инициализировать один или несколько контейнеров |
inspect | Отобразить конфигурацию объекта, обозначенного ID |
kill | Завершить работу одного или нескольких запущенных контейнеров с определенным сигналом |
load | Загрузить образ(ы) из tar-архива |
login | Вход в реестр контейнеров |
logout | Выход из реестра контейнеров |
logs | Получить журналы одного или нескольких контейнеров |
machine | Управление виртуальной машиной |
manifest | Управление списками манифестов и индексами образов |
mount | Примонтировать корневую файловую систему рабочего контейнера |
network | Управление сетями |
pause | Приостановить все процессы в одном или нескольких контейнерах |
play | Воспроизведение контейнеров, подов или томов из структурированного файла |
pod | Управление подами |
port | Показать отображения портов или конкретное отображение для контейнера |
ps | Список контейнеров |
pull | Загрузить образ из реестра |
push | Отправить образ в указанное место назначения |
rename | Переименовать существующий контейнер |
restart | Перезапустить один или несколько контейнеров |
rm | Удалить один или несколько контейнеров |
rmi | Удалить один или несколько образов из локального хранилища |
run | Запустить команду в новом контейнере |
save | Сохранить образ(ы) в архив |
search | Поиск образа в реестре |
secret | Управление секретами |
start | Запустить один или несколько контейнеров |
stats | Отобразить потоковую передачу статистики использования ресурсов контейнера |
stop | Остановить один или несколько контейнеров |
system | Управление Podman |
tag | Добавить дополнительное |
Опции:
Опция | Описание |
---|---|
--cgroup-manager string | Менеджер cgroup для использования ("cgroupfs"|"systemd") (по умолчанию "systemd") |
--conmon string | Путь к двоичному файлу conmon |
-c, --connection string | Соединение для удаленного сервиса Podman |
--events-backend string | Используемый механизм событий ("file"|"journald"|"none") (по умолчанию "journald") |
--help | Справка по Podman |
--hooks-dir strings | Установить путь к каталогу с хуками OCI (может быть указан несколько раз) (по умолчанию [/usr/share/containers/oci/hooks.d]) |
--identity string | Путь к файлу идентификации SSH, (CONTAINER_SSHKEY) |
--log-level string | Уровень логирования (trace, debug, info, warn, warning, error, fatal, panic) (по умолчанию "warn") |
--namespace string | Установить пространство имен libpod, используемое для создания отдельных представлений контейнеров и подов в системе |
--network-cmd-path string | Путь к команде для настройки сети |
--network-config-dir string | Путь к каталогу конфигурации для сетей |
--noout | Не выводить в stdout |
-r, --remote | Доступ к удаленному сервису Podman |
--root string | Путь к корневому каталогу, в котором хранятся данные, включая образы |
--runroot string | Путь к 'каталогу запуска', где хранится вся информация о состоянии |
--runtime string | Путь к совместимому с OCI двоичному файлу, используемому для запуска контейнеров (по умолчанию "crun") |
--runtime-flag stringArray | Добавить глобальные флаги для контейнерного рантайма |
--storage-driver string | Выбрать драйвер хранения, используемый для управления хранением образов и контейнеров |
--storage-opt stringArray | Используется для передачи опции драйверу хранения |
--syslog | Выводить информацию о журналировании также в системный журнал, а не только в консоль (по умолчанию false) |
--tmpdir string | Путь к временному каталогу для состояния libpod. Примечание: переменная окружения 'TMPDIR' используется для изменения расположения временного хранилища для образов контейнеров, '/var/tmp'. |
--url string | URL для доступа к сервису Podman (CONTAINER_HOST) (по умолчанию "unix:/run/user/1000/podman/podman.sock") |
-v, --version | Версия Podman |
Для работы контейнеризации Podman следует создать пул хранилища контейнеров в файловой системе:
Для работы Podman необходимо добавить в автозапуск:
Для этого в примере команды следует заменить сервис на: ,podman.socket
:
По умолчанию контейнеры Podman можно запускать только от имени пользователя root.
Rootless Podman полагается на использование пространства имен непривилегированных пользователей ( CONFIG_USER_NS_UNPRIVILEGED), что имеет серьезные последствия для безопасности.
Чтобы пользователи могли запускать Podman без root-прав, запись конфигурации subuid
и subgid
должна существовать для каждого пользователя, который хочет его использовать. Новые пользователи имеют эти записи по умолчанию.
Пользователи, созданные ранее, по умолчанию не имеют записей в /etc/subuid
и /etc/subgid
. Запись для них можно создать вручную изменив файлы, для этого следует открыть терминал и выполнить команду:
echo username:10000:65536 | sudo tee -a /etc/subuid && echo username:10000:65536 | sudo tee -a /etc/subgid
Где:
Rootless Podman использует процесс паузы для поддержания активности непривилегированных пространств имен. Это предотвращает распространение любых изменений в файлах /etc/subuid и /etc/subgid на непривилегированные контейнеры в то время, как процесс паузы запущен.
Для того чтобы эти изменения были распространены, необходимо выполнить:
podman system migrate
После этого пользователь/группа, указанные в файлах выше, смогут запускать и запускать контейнеры Podman.
Полный список доступных тегов, включая версии с инструментами сборки и без них, можно найти на странице Docker Hub.
Для загрузки образа Arch Linux следует открыть терминал и ввести команду:
podman pull docker.io/archlinux
Для загрузки образа Alpine Linux следует открыть терминал и ввести команду:
podman pull docker.io/alpine
Для загрузки образа CentOS следует открыть терминал и ввести команду:
podman pull docker.io/centos
Для загрузки образа Debian следует открыть терминал и ввести команду:
podman pull docker.io/debian
Для загрузки контейнера с Debian следует открыть терминал и ввести команду:
podman pull docker.io/debian
Для создания и запуска контейнера ввести команду:
podman run -it debian
Команда создала и запустила новый контейнер на основе образа Debian, а также был выполнен вход в его командную оболочку.
Для выхода из контейнера ввести команду:
exit
Для просмотра локальных образов следует открыть терминал и ввести команду:
podman images
Примерный вывод:
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/debian latest 2657a4a0a6d5 13 days ago 121 MB
docker.io/library/hello-world latest 9c7a54a9a43c 5 months ago 19.9 kB
Для поиска образов следует ввести:
podman search nginx
Где:
Для просмотра списка остановленных и запущенных контейнеров следует открыть терминал и ввести команду:
podman ps -a
Примерный вывод:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3135e29ab65a docker.io/library/debian:latest bash 2 hours ago Exited (0) About an hour ago sharp_carver
3acd42c9231c docker.io/library/hello-world:latest /hello 40 minutes ago Exited (0) 40 minutes ago happy_franklin
Команда без опции
-а
выведет список запущенных контейнеров.
Для удаления контейнера открыть терминал и ввести команду:
podman rm 2ebfc218663e
Где:
Для удаления образа ввести команду:
podman rmi 2657a4a0a6d5
Где:
Перед удалением образа необходимо удалить контейнер на основе которого он был создан. Для удаления сразу образа и контейнеров необходимо добавить опцию
-f
.
Для смены имени контейнера следует открыть терминал и ввести команду:
podman rename 3135e29ab65a debian_one
Где:
sudo podman volume create namevol
Где:
sudo podman network create namenetwork
Где:
sudo podman pull docker.io/freeipa/freeipa-server:fedora-39-4.11.0
sudo podman run --name freeipa.example.com -ti -h freeipa.example.com --sysctl net.ipv6.conf.all.disable_ipv6=0 --security-opt=seccomp=unconfined --mount type=volume,source=namevol,target=/data --network namenetwork --publish 127.0.0.1:443:443 docker.io/freeipa/freeipa-server:fedora-39-4.11.0
Где:
Следует обратить внимание, что указанные порты могут быть заняты другими программами на хостовой системе. Необходимо выбирать свободные порты для контейнера.
После создания контейнера будет автоматически запущена настройка FreeIPA.
Указать нужна ли настройка интегрированного DNS (BIND): yes | no
This program will set up the IPA Server.
Version 4.11.0
This includes:
* Configure a stand-alone CA (dogtag) for certificate management
* Configure the NTP client (chronyd)
* Create and configure an instance of Directory Server
* Create and configure a Kerberos Key Distribution Center (KDC)
* Configure Apache (httpd)
* Configure SID generation
* Configure the KDC to enable PKINIT
To accept the default shown in brackets, press the Enter key.
Do you want to configure integrated DNS (BIND)? [no]:
Указать полное имя хоста сервера: freeipa.example.com
Enter the fully qualified domain name of the computer
on which you're setting up server software. Using the form
<hostname>.<domainname>
Example: master.example.com
Server host name [freeipa.example.com]:
Подтвердить доменное имя, определенное на основе указанного имени хоста сервера: example.com
The domain name has been determined based on the host name.
Please confirm the domain name [example.com]:
Указать имя Realm для протокола Kerberos, обычно это имя домена, преобразованное в верхний регистр: EXAMPLE.LOCAL
The kerberos protocol requires a Realm name to be defined.
This is typically the domain name converted to uppercase.
Please provide a realm name [EXAMPLE.COM]:
Указать пароль для учетной записи Directory Manager и подтвердить его:
Certain directory server operations require an administrative user.
This user is referred to as the Directory Manager and has full access
to the Directory for system management tasks and will be added to the
instance of directory server created for IPA.
The password must be at least 8 characters long.
Directory Manager password:
Password (confirm):
Указать пароль для учетной записи администратора IPA и подтвердить его:
The IPA server requires an administrative user, named 'admin'.
This user is a regular system account used for IPA server administration.
IPA admin password:
Password (confirm):
Указать NetBIOS-имя для домена IPA:
Trust is configured but no NetBIOS domain name found, setting it now.
Enter the NetBIOS name for the IPA domain.
Only up to 15 uppercase ASCII letters, digits and dashes are allowed.
Example: EXAMPLE.
NetBIOS domain name [EXAMPLE]:
Указать адрес сервера времени или пула времени, используемого для синхронизации времени через Chrony: yes | no
Do you want to configure chrony with NTP server or pool address? [no]:
Проверить верны ли указанные значения и для продолжения настройки FreeIPA ввести: yes
The IPA Master Server will be configured with:
Hostname: freeipa.example.com
IP address(es): 10.89.0.2
Domain name: example.com
Realm name: EXAMPLE.COM
The CA will be configured with:
Subject DN: CN=Certificate Authority,O=EXAMPLE.LOCAL
Subject base: O=EXAMPLE.LOCAL
Chaining: self-signed
Continue to configure the system with these values? [no]: yes
FreeIPA server configured
, открыть дополнительный терминал или вкладку в терминале и ввести команду:sudo podman stop freeipa.example.com
sudo podman start freeipa.example.com
sudo podman exec -it freeipa.example.com bash
cat /etc/hosts
Примерный вывод:
# Static table lookup for hostnames.
# See hosts(5) for details.
127.0.0.1 localhost
127.0.0.1 ublinux.localdomain ublinux
127.0.0.1 sb-ssl.l.google.com safebrowsing.clients.google.com safebrowsing.cache.l.google.com
127.0.0.1 ublinux-test-11
10.89.0.3 freeipa.example.com freeipa.example.com
10.89.0.1 host.containers.internal
ipa-dns-install --ip-address=10.89.0.3 --no-forwarders
В процессе настройки будут заданы вопросы, значения в квадратных скобках (например: [no]) означают выбор по умолчанию, который предлагается после нажания клавиши Enter.
Примерный вывод:
This program will setup DNS for the IPA Server.
This includes:
* Configure DNS (bind)
* Configure SoftHSM (required by DNSSEC)
* Configure ipa-dnskeysyncd (required by DNSSEC)
NOTE: DNSSEC zone signing is not enabled by default
To accept the default shown in brackets, press the Enter key.
Do you want to search for missing reverse zones? [yes]:
The following operations may take some minutes to complete.
Please wait until the prompt is returned.
Configuring DNS (named)
[1/12]: generating rndc key file
[2/12]: adding DNS container
[3/12]: setting up our zone
[4/12]: setting up our own record
[5/12]: setting up records for other masters
[6/12]: adding NS record to the zones
[7/12]: setting up kerberos principal
[8/12]: setting up LDAPI autobind
[9/12]: setting up named.conf
[10/12]: setting up server configuration
[11/12]: configuring named to start on boot
[12/12]: changing resolv.conf to point to ourselves
Done configuring DNS (named).
Restarting the web server to pick up resolv.conf changes
Configuring DNS key synchronization service (ipa-dnskeysyncd)
[1/7]: checking status
[2/7]: setting up bind-dyndb-ldap working directory
[3/7]: setting up kerberos principal
[4/7]: setting up SoftHSM
[5/7]: adding DNSSEC containers
[6/7]: creating replica keys
[7/7]: configuring ipa-dnskeysyncd to start on boot
Done configuring DNS key synchronization service (ipa-dnskeysyncd).
Restarting ipa-dnskeysyncd
Restarting named
Updating DNS system records
==============================================================================
Setup complete
Global DNS configuration in LDAP server is empty
You can use 'dnsconfig-mod' command to set global DNS options that
would override settings in local named.conf files
You must make sure these network ports are open:
TCP Ports:
* 53: bind
UDP Ports:
* 53: bind
kinit admin
В полученном результате ввести пароль:
Password for admin@EXAMPLE.LOCAL:
klist
Примерный вывод:
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin@EXAMPLE.LOCAL
Valid starting Expires Service principal
12/07/23 08:54:13 12/08/23 08:34:47 krbtgt/EXAMPLE.LOCAL@EXAMPLE.LOCAL
sudo mcedit /etc/hosts
/etc/hosts
IP-адрес полученный на этапе 11:10.89.0.3 freeipa.example.com
Сохранить изменения в редакторе mcedit клавишей: F2 и выйти из редактора нажатием клавиши: F10.
Открыть браузер и перейти по адресу: https://freeipa.example.com/ipa/ui/
На странице "Подключение не защищено" выполнить небезопасный переход на сайт (Для Chrome и Chromium: Дополнительные > Перейти на сайт freeipa.example.com
).
На странице входа ввести логин и пароль:
Установить можно отдельным модулем или пакетом:
Для установки следует воспользоваться утилитой "Установка и удаление программ".
Модуль, необходимый для установки:
ubm-podman
Для установки следует воспользоваться утилитой "Установка и удаление программ".
Пакет, необходимый для установки:
Внимание! Если система загружена в режиме полного сохранения, то внесенные изменения в систему будут сохранены. Если режим загрузки другой, то рекомендуется воспользоваться "Сохранением изменений".