Начало работы с Podman: управление образами, контейнерами и томами
На этой странице
- 1. Базовая команда Podman
- 2. Управление образами контейнеров с помощью Podman
- 3. Управление контейнерами
- 4. Управление громкостью
- 5. Создание пользовательских изображений с фиксацией
- 6. Создавайте собственные образы с помощью Dockerfile
Podman — это среда выполнения контейнера, которая предоставляет функции, аналогичные Docker. Это часть библиотеки libpod, которую можно использовать для управления модулями, контейнерами, образами контейнеров и томами контейнеров. Podman сильно отличался от Docker, который использует архитектуру клиент-сервер и требует для запуска демона Docker, в то время как Podman не требует запуска какого-либо демона, а также может работать безупречно без привилегий root.
В этом руководстве мы покажем вам базовое использование Podman для управления контейнерами, образами и томами, а также для создания образов контейнеров. Чтобы выполнить это руководство, у вас должен быть установлен podman. вот руководства для разных операционных систем:
- Как установить Podman в Ubuntu 22.04
- Начало работы с Podman (альтернатива Docker) в Rocky Linux
- Как установить и использовать Podman (альтернатива Docker) в Ubuntu 20.04
- Как установить Podman в качестве альтернативы Docker в Debian 11
Предпосылки
- Сервер Ubuntu с установленным Podman
- Базовые знания Docker облегчат
1. Базовая команда Podman
После установки Podman в системе Ubuntu мы должны знать, как проверить сам Podman. Нам нужно проверить версию, которая уже установлена в системе, системную среду Podman и использование базовой справки.
Чтобы получить установленную версию Podman на компьютере, используйте следующую команду.
podman version
Для этого руководства подойдет любая версия Podman > 1.0.1.
Теперь проверьте настройку среды Podman.
podman info
И вам будет отображаться системная среда установки Podman. Включая информацию о пакетах хоста, реестры и хранилище.
Затем выполните следующую команду, чтобы отобразить все доступные параметры команды Podman.
podman --help
Чтобы отобразить справку для конкретной команды, вы можете использовать, как показано ниже.
podman pod help
2. Управляйте образами контейнеров с помощью Podman
Теперь переходим к управлению образами контейнеров с помощью Podman. Существует несколько основных команд, связанных с управлением образами контейнеров, которые необходимо знать, включая поиск образов, загрузку образов, отображение доступных образов в локальной системе и удаление образов.
Запустите команду ниже, чтобы найти изображение.
podman search nginx
Команда будет искать образы, содержащие слово nginx, во всех доступных репозиториях, которые уже определены в файле конфигурации /etc/containers/repositories.conf.
Теперь загрузите несколько изображений с помощью приведенных ниже команд podman pull.
podman pull docker.io/library/nginx
podman pull docker.io/library/alpine
После завершения проверьте все доступные изображения на сервере.
podman images
Теперь вы получите образы nginx и alpine в системе.
Чтобы удалить альпийское изображение, вы можете использовать опцию rmi, как показано ниже.
podman rmi alpine
В результате у вас в системе будет только образ контейнера nginx.
3. Управление контейнерами
На этом этапе мы узнали об управлении образами контейнеров. И следующим шагом мы научимся создавать контейнеры и управлять ими с помощью Podman.
Чтобы создать новый контейнер, мы можем использовать команду запуска podman, как показано ниже.
podman run -d -p 8000:80 --name hakase-nginx docker.io/library/nginx
Команда создаст новый контейнер с именем hakase-nginx на основе образа nginx и предоставит порт 8000 на хост-компьютере.
Параметры команды Details:
-d - оставить контейнер работать в фоновом режиме и в результате просто вывести идентификатор контейнера.
-p 8000:80 - сопоставление портов для контейнера и хост-системы. Порт 8000 на хост-компьютере и порт 80 на контейнере.
--name hakase-nginx — укажите имя контейнера с помощью hakase-nginx.
Теперь отобразите все запущенные контейнеры в системе.
podman ps
И вам будет показано, что контейнер с именем hakase-nginx запущен и работает.
Если вы хотите проверить все доступные контейнеры, вы можете использовать опцию -a.
podman ps -a
Теперь вы получите все доступные контейнеры с разными состояниями.
После того, как вы получите все запущенные контейнеры на хост-компьютере, мы покажем вам, как проверить все процессы внутри контейнера, присоединить его к работающему контейнеру, а также остановить и удалить контейнер.
Чтобы проверить процесс внутри работающего контейнера, используйте следующую команду.
podman top hakase-nginx
Теперь, чтобы подключиться и получить доступ к работающему контейнеру, вы можете использовать команду exec, как показано ниже.
podman exec -it hakase-nginx /bin/bash
Внутри контейнера hakase-nginx проверьте на нем версию nginx.
nginx -V
Вы получите результат, как показано ниже.
Теперь введите exit, чтобы выйти из контейнера.
Затем остановите контейнер hakase-nginx.
podman stop hakase-nginx
Затем снимите контейнер.
podman rm hakase-nginx
Если вы хотите принудительно остановить и удалить работающий контейнер, вы можете использовать параметр -f force.
podman rm hakase-nginx -f
4. Управление громкостью
Начиная с версии 0.12 Podman поддерживает создание и управление только локальными томами. Итак, если вы используете более старую версию, вы не получите эту команду громкости podman.
Теперь создайте новый локальный том, используя следующую команду.
podman volume create hakase-volume
После этого отобразите все доступные тома в системе.
podman volume ls
И вы получите хакасе-том в списке.
Чтобы проверить подробности о томе hakase-volume, мы можем использовать опцию проверки, как показано ниже.
podman volume inspect hakase-volume
И вы увидите, что точка монтирования тома находится в локальном каталоге /var/lib/containers/storage/hakase-volume/_data.
Перейдите в этот каталог и создайте новый файл index.html.
cd /var/lib/containers/storage/hakase-volume/_data
echo "<h1><center>This is custom index and volume - Hello Podman</center></h1>" > index.html
Теперь создайте новый контейнер и смонтируйте в него том hakase.
podman run -d -p 8000:80 -v hakase-volume:/usr/share/nginx/html --name hakase-nginx docker.io/library/nginx
После создания контейнера проверьте доступные тома в контейнере с помощью следующей команды.
podman inspect -f '{{ json .Mounts }}' hakase-nginx | jq
В нижней части результата вы получите hakase-volume на контейнере.
Затем проверьте IP-адрес контейнера.
podman inspect -f '{{ .NetworkSettings.IPAddress }}' hakase-nginx
Получите доступ к контейнеру через порт HTTP, используя httpie.
http http://10.88.0.4/
И вы получите пользовательский файл index.html, созданный на томе hakase.
Теперь, если вы хотите удалить том, вы можете использовать опцию rm.
podman volume rm hakase-volume
И хакасе-том будет удален.
5. Создавайте пользовательские изображения с помощью фиксации
Теперь собирались создавать собственные образы контейнеров с помощью Podman. По сути, Podman позволяет создавать собственные образы на основе измененного контейнера или создавать новые собственные образы с помощью файла Dockerfile.
В этом разделе мы собирались создать новые пользовательские образы на основе измененного контейнера с помощью команды podman commit.
Загрузите/извлеките мастер-образ ubuntu.
podman pull docker.io/library/ubuntu
Теперь запустите контейнер на основе образа ubuntu. А внутри контейнера запустите команду bash, которая обновит репозитории и установит пакет nginx.
podman run --name container-temp ubuntu bash -c "apt update && apt install -y nginx"
Дождитесь установки nginx внутри контейнера.
После завершения создайте новый пользовательский образ на основе контейнера-temp, используя следующую команду.
podman commit container-temp my-nginx
Затем проверьте доступные изображения в системе.
podman images
И вы получите новый образ с именем my-nginx в списке.
Если вы хотите запустить контейнер на основе образа my-nginx, выполните следующую команду.
podman run -dt -p 8001:80 --name nginx01 my-nginx /usr/sbin/nginx -g 'daemon off;'
Теперь проверьте запущенный контейнер и проверьте его IP-адрес.
podman ps
podman inspect --format '{{ .NetworkSettings.IPAddress }}' nginx01
И вам будет показано, что контейнер nginx01 запущен и работает. После этого получите доступ к порту HTTP в контейнере nginx01.
http -p h 10.88.0.19
в результате вы получите ответ заголовка HTTP, как показано ниже.
6. Создавайте собственные образы с помощью Dockerfile
Теперь собирались создать новый пользовательский образ контейнера с помощью Dockerfile.
Создайте новый каталог проекта и создайте внутри новый Dockerfile.
mkdir project; cd project/
vim Dockerfile
Вставьте следующую конфигурацию.
FROM ubuntu
# Install Nginx
RUN \
apt-get update && \
apt-get install -y nginx && \
rm -rf /var/lib/apt/lists/* && \
echo "\ndaemon off;" >> /etc/nginx/nginx.conf && \
chown -R www-data:www-data /var/lib/nginx
# Define mountable directories.
VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]
# Define the working directory.
WORKDIR /etc/nginx
# Define default command.
CMD ["nginx"]
# Expose ports.
EXPOSE 80
EXPOSE 443
Сохранить и закрыть.
Теперь запустите podman ниже, чтобы создать новый пользовательский образ с помощью Dockerfile.
podman build -t hakase-image .
После завершения проверьте новый образ на машине.
podman images
И вы получите образ хакасэ.
Затем создайте новый контейнер на основе образа hakase, выполнив следующую команду.
podman run -d -p 8002:80 --name nginx02 hakase-image
После этого проверьте контейнер nginx02 и его IP-адрес.
podman ps
podman inspect --format '{{ .NetworkSettings.IPAddress }}' nginx02
Убедитесь, что контейнер nginx02 запущен и работает.
Теперь проверьте контейнер с помощью инструмента httpie.
http 10.88.0.21
И вам будет показана страница Nginx по умолчанию и ее HTTP-заголовок.
Наконец, теперь вы можете управлять контейнерами, изображениями и томами с помощью Podman. И вы можете создавать новые пользовательские образы для своего приложения, используя файл Dockerfile.