Поиск по сайту:

Начало работы с Podman: управление образами, контейнерами и томами


На этой странице

  1. 1. Базовая команда Podman
  2. 2. Управление образами контейнеров с помощью Podman
  3. 3. Управление контейнерами
  4. 4. Управление громкостью
  5. 5. Создание пользовательских изображений с фиксацией
  6. 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.