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

Начало работы с Podman (альтернатива Docker) в Rocky Linux


Это руководство существует для этих версий ОС

  • Rocky Linux 8.4
  • Rocky Linux 8.4

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

  1. Предпосылки
  2. Установка Podman в Rocky Linux
  3. Важная конфигурация Podman
  4. Настроить нового пользователя
  5. Основные способы использования Podman
    1. Поиск изображений контейнеров
    2. Управление образами контейнеров
    3. Запуск контейнера с помощью Podman
    4. Проверка журналов контейнеров с помощью Podman
    5. Остановка контейнера с помощью Podman
    6. Настройка пользовательского тома с помощью Podman
    7. SSH для запуска контейнера
    8. Очистить окружающую среду

    Podman — это встроенный в Linux инструмент для развертывания приложений с использованием контейнеров Open Container Initiative (OCI) и образов контейнеров. Он поддерживает несколько форматов образов контейнеров, включая образы Docker и образы контейнеров OCI. Также Podman поддерживает управление подами, группами контейнеров.

    Podman — это инструмент без демона, работающий как единая двоичная командная строка без службы. Он предоставляет командную строку, похожую на Docker, вы можете использовать псевдоним, например псевдоним docker=podman.

    Для запуска контейнеров и управления образами контейнеров Podman использует среды выполнения контейнеров libpod и OCI, такие как runc, crun и runv.

    Предпосылки

    В этом руководстве вы узнаете, как установить Podman в системе Rocky Linux. Кроме того, вы узнаете об основах использования Podman для управления контейнерами и образами контейнеров.

    Прежде чем начать, убедитесь, что у вас есть следующие требования:

    • Операционная система: Rocky Linux 8.4 (Green Obsidian)
    • Привилегии root: для установки новых пакетов и редактирования конфигурации системы.

    Теперь давайте начнем установку Podman.

    Установка Podman на Rocky Linux

    По умолчанию репозиторий appstream Rocky Linux предоставляет пакеты podman.

    1. Выполните приведенную ниже команду DNF, чтобы отобразить информацию о пакете podman.

    sudo dnf info podman

    Вы увидите аналогичный вывод, как показано ниже.

    Last metadata expiration check: 0:07:09 ago on Tue 16 Nov 2021 09:30:27 AM UTC.
    Available Packages
    Name         : podman
    Version      : 3.3.1
    Release      : 9.module+el8.5.0+710+4c471e88
    Architecture : x86_64
    Size         : 12 M
    Source       : podman-3.3.1-9.module+el8.5.0+710+4c471e88.src.rpm
    Repository   : appstream
    Summary      : Manage Pods, Containers and Container Images
    URL          : https://podman.io/
    License      : ASL 2.0 and GPLv3+
    Description  : podman (Pod Manager) is a fully featured container engine that is a simple
                 : daemonless tool.  podman provides a Docker-CLI comparable command line that
                 : eases the transition from other container engines and allows the management of
                 : pods, containers and images.  Simply put: alias docker=podman.
                 : Most podman commands can be run as a regular user, without requiring
                 : additional privileges.
                 :
                 : podman uses Buildah(1) internally to create container images.
                 : Both tools share image (not container) storage, hence each can use or
                 : manipulate images (but not containers) created by the other.
                 :
                 : Manage Pods, Containers and Container Images
                 : podman Simple management tool for pods, containers and images

    Репозиторий appstream содержит версию пакета Podman 3.3.1.

    2. Установите Podman с помощью приведенной ниже команды DNF.

    sudo dnf install podman

    Введите y для подтверждения и нажмите Enter, чтобы продолжить установку.

    3. Если установка Podman завершена, проверьте это с помощью следующей команды.

    podman version

    Вы увидите аналогичный вывод, как показано ниже.

    Version:      3.3.1
    API Version:  3.3.1
    Go Version:   go1.16.7
    Built:        Wed Nov 10 01:48:06 2021
    OS/Arch:      linux/amd64

    Важная конфигурация Podman

    Пакет Podman поставляется с некоторой конфигурацией по умолчанию, расположенной в каталоге /etc/containers.

    Ниже приведены некоторые конфигурации Podman, которые вы должны знать.

    • policy.json. Конфигурация политики для подписи образа.
    • registries.conf. Список доступных реестров образов контейнеров, таких как реестр Docker, реестр образов контейнеров RHEL и реестр образов контейнеров Fedora.
    • storage.conf. Конфигурация хранилища по умолчанию для Podman. Включает драйверы, местоположение и т. д.
    • Каталог registries.d/. Дополнительные настройки реестров и подпись образов
    • Каталог registries.conf.d/. Дополнительная настройка псевдонимов образов контейнеров.

    Настройка нового пользователя

    На этом шаге вы создадите нового пользователя и проверите установку Podman, запустив образ Docker hello-world.

    1. Запустите приведенную ниже команду, чтобы добавить нового пользователя johndoe.

    useradd -m -s /bin/bash johndoe
    passwd johndoe

    Введите новый надежный пароль для пользователя johndoe.

    2. Затем войдите в систему как пользователь johndoe, используя следующую команду.

    su - johndoe

    3. Теперь выполните следующую команду, чтобы запустить новый контейнер на основе образа Docker hello-world.

    podman run hello-world

    Вы увидите выходные сообщения Hello World, что означает, что контейнер запущен, но теперь закрыт.

    ? docker.io/library/hello-world:latest
    Trying to pull docker.io/library/hello-world:latest...
    Getting image source signatures
    Copying blob 2db29710123e done
    Copying config feb5d9fea6 done
    Writing manifest to image destination
    Storing signatures

    Hello from Docker!
    This message shows that your installation appears to be working correctly.

    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (amd64)
     3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

    To try something more ambitious, you can run an Ubuntu container with:
     $ docker run -it ubuntu bash

    Share images, automate workflows, and more with a free Docker ID:
     https://hub.docker.com/

    For more examples and ideas, visit:
     https://docs.docker.com/get-started/

    4. Проверьте статус контейнеров в вашей системе, используя приведенную ниже команду Podman.

    podman ps -a

    Вы увидите контейнер на основе образа Docker hello-world с текущим статусом Exited.

    CONTAINER ID  IMAGE                                 COMMAND     CREATED        STATUS                    PORTS       NAMES
    cea9bbfeac4d  docker.io/library/hello-world:latest  /hello      6 minutes ago  Exited (0) 6 minutes ago              recursing_shaw

    Основные способы использования Podman

    На этом этапе вы изучите основы использования Podman для управления контейнерами и образами контейнеров.

    Поиск образов контейнеров

    1. Чтобы найти образы контейнеров с помощью Podman, используйте следующую команду. В этом примере выполнялся поиск образов контейнеров с именем nginx.

    podman search nginx

    Вы увидите множество образов контейнеров из нескольких реестров.

    2. Вы можете ограничить результаты поиска из каждого реестра образов контейнеров, используя параметр --limit n.

    podman search nginx --limit 3

    Теперь вы увидите каждый реестр с 3 результатами образов контейнеров с именем nginx.

    INDEX              NAME                                                DESCRIPTION                                      STARS       OFFICIAL    AUTOMATED
    fedoraproject.org  registry.fedoraproject.org/f29/nginx                                                                 0
    fedoraproject.org  registry.fedoraproject.org/f29/origin-nginx-router                                                   0
    redhat.com         registry.access.redhat.com/ubi8/nginx-120           Platform for running nginx 1.20 or building ...  0
    redhat.com         registry.access.redhat.com/ubi8/nginx-118           Platform for running nginx 1.18 or building ...  0
    redhat.com         registry.access.redhat.com/rhscl/nginx-18-rhel7     Nginx 1.8 server and a reverse proxy server      0
    centos.org         registry.centos.org/bamachrn/nginx-header                                                            0
    centos.org         registry.centos.org/centos/nginx                                                                     0
    centos.org         registry.centos.org/centos/nginx-110-centos7                                                         0
    docker.io          docker.io/library/nginx                             Official build of Nginx.                         15839       [OK]
    docker.io          docker.io/jwilder/nginx-proxy                       Automated Nginx reverse proxy for docker con...  2096                    [OK]
    docker.io          docker.io/nginxinc/nginx-unprivileged               Unprivileged NGINX Dockerfiles                   54

    Управление образами контейнеров

    Podman поддерживает формат образов OCI и Docker. На этом этапе вы будете управлять образами контейнеров с помощью Podman.

    1. Загрузите образ контейнера nginx:alpine с помощью следующей команды.

    podman pull nginx:alpine

    Выберите реестр контейнеров, который вы хотите использовать, затем нажмите Enter для подтверждения. В этом примере мы будем использовать реестр Docker.

    ? Please select an image:
        registry.fedoraproject.org/nginx:alpine
        registry.access.redhat.com/nginx:alpine
        registry.centos.org/nginx:alpine
      ? docker.io/library/nginx:alpine

    Начнется процесс загрузки.

    ? docker.io/library/nginx:alpine
    Trying to pull docker.io/library/nginx:alpine...
    Getting image source signatures
    Copying blob a4e156412037 done
    Copying blob a2402c2da473 done
    Copying blob e0bae2ade5ec done
    Copying blob 97518928ae5f done
    Copying blob 3f3577460f48 done
    Copying blob e362c27513c3 done
    Copying config b46db85084 done
    Writing manifest to image destination
    Storing signatures
    b46db85084b80a87b94cc930a74105b74763d0175e14f5913ea5b07c312870f8

    2. Если процесс загрузки образа контейнера завершен, проверьте образы загрузчика с помощью следующей команды.

    podman images

    Ниже приведен аналогичный результат, который вы получите.

    REPOSITORY                     TAG         IMAGE ID      CREATED      SIZE
    docker.io/library/nginx        alpine      b46db85084b8  3 days ago   24.7 MB
    docker.io/library/hello-world  latest      feb5d9fea6a5  7 weeks ago  19.9 kB

    Запуск контейнера с помощью Podman

    Скачав образ контейнера nginx:alpine, вы узнаете, как запустить новый контейнер с помощью Podman.

    1. Выполните следующую команду, чтобы запустить контейнер на основе образа nginx:alpine.

    podman run -it --rm -d -p 8080:80 --name web nginx:alpine

    Вы получите случайную строку и номер контейнера.

    2. Проверьте контейнер, работающий в вашей системе, с помощью следующей команды.

    podman ps

    Вы увидите аналогичный вывод, как показано ниже.

    Имя контейнера web равно Up и предоставляет порт 8080 на хост-компьютере.

    3. Теперь откройте веб-браузер и введите IP-адрес Rocky Linux в адресной строке. В этом примере компьютер Rocky Linux имеет IP-адрес 192.168.1.10.

    http://192.168.1.10:8080/

    Вы увидите файл index.html по умолчанию из контейнера web, который основан на образе контейнера nginx:alpine.

    Проверка журналов контейнеров с помощью Podman

    Теперь вы изучите команду Podman для проверки журналов контейнера с помощью параметра logs.

    1. Чтобы проверить журналы контейнера, вы можете использовать команду Podman ниже.

    podman logs web

    Вы увидите подробные журналы контейнера web.

    2. Чтобы ограничить вывод журналов контейнера, используйте параметр --tail n.

    podman logs --tail 10 web

    Ниже приведен аналогичный вывод журнала контейнера web.

    Остановка контейнера с помощью Podman

    1. Чтобы остановить веб-контейнер, используйте приведенную ниже команду Podman.

    podman stop web

    Теперь контейнер web будет остановлен.

    2. Проверьте с помощью следующей команды.

    podman ps
    podman ps -a

    Вы увидите, что веб-контейнер автоматически удаляется, потому что вы используете параметр --rm при запуске контейнера.

    Настройте пользовательский том с помощью Podman

    На этом этапе вы узнаете, как управлять томами с помощью Podman.

    1. Создайте новые данные каталога и пользовательский файл index.html. Это заменит файл Nginx index.html по умолчанию в контейнере Nginx.

    mkdir -p ~/data/
    nano ~/data/inde.html

    Скопируйте и вставьте следующий HTML-скрипт.

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>Welcome to Container Nginx</title>
    </head>
    <body>
      <h2>Hello from Nginx container - Managed with Podman</h2>
    </body>
    </html>

    Сохраните скрипт и выйдите.

    2. Затем выполните следующую команду, чтобы создать новый контейнер с настраиваемым томом.

    podman run -it --rm -d -p 8080:80 --name web -v ~/data:/usr/share/nginx/html nginx:alpine

    Используйте параметр -v data:/usr/share/nginx/html, чтобы настроить собственный том для нового контейнера. Каталог data будет подключен к каталогу контейнера /usr/share/nginx/html.

    3. Проверьте запущенные контейнеры с помощью приведенной ниже команды Podman.

    podman ps

    Новые имена контейнеров webUp с пользовательским томом.

    4. Откройте веб-браузер и введите IP-адрес сервера с портом 8080.

    http://192.168.1.10:8080/

    Теперь вы увидите пользовательскую страницу index.html, как показано ниже.

    SSH для запуска контейнера

    На этом шаге вы получите доступ к оболочке работающего контейнера.

    1. Чтобы войти в работающий контейнер, используйте Podman с параметром exec, как показано ниже.

    podman exec -it web /bin/sh

    2. После входа в контейнер проверьте имя узла контейнера, IP-адрес и таблицу маршрутизации.

    hostname

    ip a
    route -n

    Теперь введите exit и нажмите Enter, чтобы выйти из контейнера.

    Очистить окружающую среду

    На последнем шаге вы очистите свою среду.

    1. Остановите контейнер web с помощью следующей команды.

    podman stop web

    2. Затем удалите все контейнеры со статусом Exited с помощью приведенной ниже команды podman.

    podman rm $(podman ps --filter "status=exited" -q)

    Теперь вы завершили базовое использование Podman для управления контейнерами и образами контейнеров.

    Заключение

    Поздравляем! Вы успешно установили Podman в системе Rocky Linux. Кроме того, вы узнали об основах использования Podman для управления контейнерами и образами контейнеров.

    На следующем этапе вас может заинтересовать создание пользовательских образов контейнеров на основе формата образа Docker или спецификации образа контейнера OCI.