Альтернативы Замена Docker Это Podman
Podman
sudo apt install podman # Ubuntu
sudo dnf install podman # Fedora
sudo pacman -S podman # Arch
https://www.youtube.com/watch?v=RqqKF0ubtYE&t=497s
podman run hello-world
apt update
sudo apt install -y podman
podman -v
podman search docker.io/library/php
podman pull docker.io/library/php:8.3
podman images
# Контейнеры
podman ps -a
Назначение: Команда podman ps -a используется для просмотра списка контейнеров, которые были запущены или остановлены на вашем хосте.
Вывод: Она показывает информацию о контейнерах, такую как:
CONTAINER ID: Уникальный идентификатор контейнера.
IMAGE: Имя образа, из которого был создан контейнер.
COMMAND: Команда, которая была запущена внутри контейнера.
CREATED: Дата и время создания контейнера.
STATUS: Текущий статус контейнера (запущен, остановлен и т.д.).
PORTS: Порты, которые были открыты в контейнере.
NAMES: Имя контейнера.
# Установленные образы(шаблоны)
podman images
Назначение: Команда podman images используется для просмотра списка образов контейнеров, которые доступны на вашем хосте.
Вывод: Она показывает информацию об образах, такую как:
REPOSITORY: Имя репозитория, из которого был скачан образ.
TAG: Тег образа.
IMAGE ID: Уникальный идентификатор образа.
CREATED: Дата и время создания образа.
SIZE: Размер образа.
# Можно запустить один и тот же контейнер сразу
podman run -d --name name1 -p 8080:80 nginx
podman run -d --name name2 -p 8081:80 nginx
# Остановить
podman stop NAME
podman stop -a // Остановит всё
# Проверка
curl http:// 0.0.0.0:8080
# Поиск
podman search CONTAINERNAME
# Запуск
podman run --name NAME1 -p 3000:8080 -v /home/user/myProd/:/var/lib/Prod:Z -d NAMEIMAGE2
### 1. `--name NAME1`
- **Описание**: Этот параметр задает имя контейнера.
- **Что делает**: Контейнер будет иметь имя `NAME1`. Это удобно для последующего управления контейнером, так как можно обращаться к нему по имени, а не по ID.
### 2. `-p 3000:8080`
пробрасывает порт `8080` из контейнера на порт `3000` хост-системы. То есть, если в контейнере запущен сервер, который слушает на порту `8080`, то к нему можно будет обратиться через порт `3000` на хост-системе.
### 3. `-v /home/user/myProd/:/var/lib/Prod:Z`
монтирует директорию `/home/user/myProd/` с хост-системы в директорию `/var/lib/Prod` внутри контейнера.
Флаг `:Z` разрешить изменение всего в проброшеной дмрректории
### 4. `-d`
Контейнер будет запущен в фоновом режиме, и командная строка не будет блокирована. Вы сможете продолжить использовать терминал для других команд.
### 5. `NAMEIMAGE2`
- **Описание**: Это имя образа, из которого будет создан контейнер.
- **Что делает**: Podman будет искать образ с именем `NAME2` на локальной машине или в удаленном репозитории (например, Docker Hub) и запустит контейнер из этого образа.
## Podman -h
Управление подами, контейнерами и образами
**Использование:**
```
podman [опции] [команда]
```
**Доступные команды:**
* **attach**: Подключиться к запущенному контейнеру
* **auto-update**: Автоматически обновить контейнеры в соответствии с их политикой автообновления
* **build**: Собрать образ с использованием инструкций из Containerfiles
* **commit**: Создать новый образ на основе измененного контейнера
* **compose**: Запустить рабочие нагрузки compose через внешнего провайдера, такого как docker-compose или podman-compose
* **container**: Управление контейнерами
* **cp**: Копировать файлы/папки между контейнером и локальной файловой системой
* **create**: Создать, но не запускать контейнер
* **diff**: Показать изменения в файловой системе объекта
* **events**: Показать системные события podman
* **exec**: Запустить процесс в запущенном контейнере
* **export**: Экспортировать файловую систему контейнера в виде архива tar
* **farm**: Распределить сборки на удаленные машины
* **generate**: Сгенерировать структурированные данные на основе контейнеров, подов или томов
* **healthcheck**: Управление проверками работоспособности контейнеров
* **help**: Помощь по любой команде
* **history**: Показать историю указанного образа
* **image**: Управление образами
* **images**: Список образов в локальном хранилище
* **import**: Импортировать tar-архив для создания файловой системы образа
* **info**: Показать информацию о системе podman
* **init**: Инициализировать один или несколько контейнеров
* **inspect**: Показать конфигурацию объекта, обозначенного идентификатором
* **kill**: Убить один или несколько запущенных контейнеров с определенным сигналом
* **kube**: Запустить контейнеры, поды или тома из структурированного файла
* **load**: Загрузить образ(ы) из tar-архива
* **login**: Войти в реестр контейнеров
* **logout**: Выйти из реестра контейнеров
* **logs**: Получить логи одного или нескольких контейнеров
* **machine**: Управление виртуальной машиной
* **manifest**: Манипулировать списками манифестов и индексами образов
* **mount**: Подключить корневую файловую систему рабочего контейнера
* **network**: Управление сетями
* **pause**: Приостановить все процессы в одном или нескольких контейнерах
* **pod**: Управление подами
* **port**: Список портовых маппингов или конкретный маппинг для контейнера
* **ps**: Список контейнеров
* **pull**: Загрузить образ из реестра
* **push**: Отправить образ в указанное место назначения
* **rename**: Переименовать существующий контейнер
* **restart**: Перезапустить один или несколько контейнеров
* **rm**: Удалить один или несколько контейнеров
* **rmi**: Удалить один или несколько образов из локального хранилища
* **run**: Запустить команду в новом контейнере
* **save**: Сохранить образ(ы) в архив
* **search**: Поиск образа в реестре
* **secret**: Управление секретами
* **start**: Запустить один или несколько контейнеров
* **stats**: Показать живой поток статистики использования ресурсов контейнера
* **stop**: Остановить один или несколько контейнеров
* **system**: Управление podman
* **tag**: Добавить дополнительное имя локальному образу
* **top**: Показать запущенные процессы контейнера
* **unmount**: Отмонтировать корневую файловую систему рабочего контейнера
* **unpause**: Возобновить процессы в одном или нескольких контейнерах
* **unshare**: Запустить команду в измененном пространстве пользователя
* **untag**: Удалить имя из локального образа
* **update**: Обновить существующий контейнер
* **version**: Показать информацию о версии Podman
* **volume**: Управление томами
* **wait**: Блокировать один или несколько контейнеров
**Опции:**
* **--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)
* **--imagestore string**: Путь к хранилищу образов, отличному от корневого каталога графа, используйте это для разделения хранения образов в отдельное хранилище образов, подробнее см. 'man containers-storage.conf'
* **--log-level string**: Записывать сообщения журнала выше указанного уровня (trace, debug, info, warn, warning, error, fatal, panic) (по умолчанию "warn")
* **--module strings**: Загрузить модуль containers.conf(5)
* **--network-cmd-path string**: Путь к команде для настройки сети
* **--network-config-dir string**: Путь к каталогу конфигурации сетей
* **--out string**: Отправить вывод (stdout) из podman в файл
* **-r, --remote**: Доступ к удаленной службе Podman
* **--root string**: Путь к корневому каталогу графа, где хранятся образы, контейнеры и т.д.
* **--runroot string**: Путь к каталогу запуска, где хранится вся информация о состоянии
* **--runtime string**: Путь к OCI-совместимому двоичному файлу, используемому для запуска контейнеров (по умолчанию "crun")
* **--runtime-flag stringArray**: добавить глобальные флаги для исполняемого файла контейнера
* **--ssh string**: определить режим ssh (по умолчанию "golang")
* **--storage-driver string**: Выбрать, какой драйвер хранилища используется для управления хранилищем образов и контейнеров
* **--storage-opt stringArray**: Используется для передачи опции драйверу хранилища
* **--syslog**: Выводить информацию журнала в syslog в дополнение к консоли (по умолчанию false)
* **--tmpdir string**: Путь к временному каталогу для состояния libpod.
**Примечание**: используйте переменную окружения 'TMPDIR', чтобы изменить местоположение временного хранилища для образов контейнеров, '/var/tmp'. (по умолчанию "/run/user/1000/libpod/tmp")
* **--transient-store**: Включить временное хранилище контейнеров
* **--url string**: URL для доступа к службе Podman (CONTAINER_HOST) (по умолчанию "unix:///run/user/1000/podman/podman.sock")
* **-v, --version**: версия podman
* **--volumepath string**: Путь к каталогу томов, в котором хранится данные томов
# справочная информация
podman --help # список доступных команд
podman <command> --help # информация по команде
# работа с образами
podman search nginx # поиск образов по ключевому слову nginx
podman pull ubuntu # скачивание последней версии (тег по умолчанию latest) официального образа ubuntu (издатель не указывается) из репозитория по умолчанию docker.io/library
podman pull quay.io/bitnami/nginx:latest # скачивание последней версии образа nginx от издателя bitnami из репозитория quay.io/bitnami
podman pull docker.io/library/ubuntu:18.04 # скачивание из репозитория docker.io официального образа ubuntu с тегом 18.04
podman images # просмотр локальных образов
podman rmi <image_name>:<tag> # удаление образа. Вместо <image_name>:<tag> можно указать <image_id>. Для удаления образа все контейнеры на его основе должны быть как минимум остановлены
podman rmi --all # удаление всех образов
# работа с контейнерами
podman run hello-world # Hello, world! в мире контейнеров
podman run -it ubuntu bash # запуск контейнера ubuntu и выполнение команды bash в интерактивном режиме
podman run --detach --name nginx --publish 9090:8080 quay.io/bitnami/nginx:1.20.2 # запуск контейнера nginx с отображением (маппингом) порта 9090 хоста на порт 8080 внутрь контейнера
podman run --detach --name mongodb docker.io/library/mongo:4.4.10 # запуск контейнера mongodb с именем mongodb в фоновом режиме. Данные будут удалены при удалении контейнера!
podman ps # просмотр запущенных контейнеров
podman ps -a # просмотр всех контейнеров (в том числе остановленных)
podman stats --no-stream # просмотр статистики. Если у пользователя нет прав доступа root, то необходимо переключиться на cgroups v2
podman create alpine # создание контейнера из образа alpine
podman start <container_name> # запуск созданного контейнера. Вместо <container_name> можно указать <container_id>
podman start --all # запуск всех созданных контейнеров
podman stop <container_name> # остановка контейнера. Вместо <container_name> можно указать <container_id>
podman stop --all # остановка всех контейнеров
podman rm <container_name> # удаление контейнера. Вместо <container_name> можно указать <container_id>
podman rm --all # удаление всех контейнеров
# система
podman system info # общая информация о системе
podman system df # занятое место на диске
podman system prune -af # удаление неиспользуемых данных и очистка диска
https://habr.com/ru/articles/659049/