Работа с pods#

Контейнеры — это наименьшая единица, которой можно управлять с помощью контейнерных инструментов. Pod в Podman - это группа из одного или нескольких контейнеров.

К pod относятся наименьшие вычислительные блоки. Их можно создавать, развертывать и использовать для управления в средах OpenShift или Kubernetes.

Каждый pod включает в себя контейнер infra. Он содержит namespaces, связанные с pod, и позволяет Podman подключать другие контейнеры. Это обеспечивает запуск и остановку контейнеров внутри, не прерывая работу.

Создание pods#

  1. Создайте пустой pod:

    podman pod create --name mypod
    

    Пример вывода команды:

    223df6b390b4ea87a090a4b5207f7b9b003187a6960bd37631ae9bc12c433aff
    The pod is in the initial state Created.
    
  2. Опционально: Раскройте список всех pod:

    podman pod ps
    

    Пример вывода команды:

    POD ID         NAME    STATUS    CREATED                  # OF CONTAINERS   INFRA ID
    223df6b390b4   mypod   Created   Less than a second ago   1                 3afdcd93de3e
    

    Обратите внимание, что в pod появился один контейнер.

  3. Опционально: Выведите список всех pods и контейнеров, связанных с ними:

    podman ps -a --pod
    

    Пример вывода команды:

    CONTAINER ID  IMAGE                 COMMAND  CREATED                 STATUS   PORTS  NAMES               POD
    3afdcd93de3e  registry.example.ru/ubi9/pause            Less than a second ago  Created         223df6b390b4-infra  223df6b390b4
    

    В выводе отражено, что идентификатор pod из команды podman ps совпадает с идентификатором pod в команде podman pod ps. Основной контейнер infra основан на образе registry.example.ru/ubi9/pause.

  4. Запустите контейнер с именем myubi в существующем pod с именем mypod:

    podman run -dt --name myubi --pod mypod registry.../ubi9/ubi /bin/bash
    
  5. Опционально: Выведите список всех pod:

    podman pod ps
    

    Пример вывода команды:

    POD ID         NAME    STATUS    CREATED                  # OF CONTAINERS   INFRA ID
    223df6b390b4   mypod   Running   Less than a second ago   2                 3afdcd93de3e
    

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

  6. Опционально: Повторите команду из шага №3.

    Пример вывода команды:

    CONTAINER ID  IMAGE                                       COMMAND    CREATED                 STATUS                     PORTS  NAMES               POD
    5df5c48fea87  registry.access.slo.ru/ubi9/ubi:latest  /bin/bash  Less than a second ago  Up Less than a second ago         myubi               223df6b390b4
    3afdcd93de3e  registry.access.slo.ru/ubi9/pause                                   Less than a second ago  Up Less than a second ago         223df6b390b4-infra  223df6b390b4
    

Отображение информации о pod#

Выведите информацию об активных процессах запущенных в pod:

  • Для раскрытия информации о работающих процессах контейнеров в pod введите:

    podman pod top mypod
    

    Пример вывода команды:

    USER   PID   PPID   %CPU    ELAPSED         TTY     TIME   COMMAND
    0      1     0      0.000   24.077433518s   ?       0s     /pause
    root   1     0      0.000   24.078146025s   pts/0   0s     /bin/bash
    
  • Для отображения статистики использования ресурсов для контейнеров в одном или нескольких pods введите:

    podman pod stats -a --no-stream
    

    Пример вывода команды:

    ID             NAME              CPU %   MEM USAGE / LIMIT   MEM %   NET IO    BLOCK IO   PIDS
    a9f807ffaacd   frosty_hodgkin    --      3.092MB / 16.7GB    0.02%   -- / --   -- / --    2
    3b33001239ee   sleepy_stallman   --      -- / --             --      -- / --   -- / --    --
    
  • Для раскрытия информации, описывающей pod, используйте:

    podman pod inspect mypod
    

    Пример вывода команды:

    {
       "Id": "db99446fa9c6d10b973d1ce55a42a6850357e0cd447d9bac5627bb2516b5b19a",
       "Name": "mypod",
       "Created": "2020-09-08T10:35:07.536541534+02:00",
       "CreateCommand": [
           "podman",
           "pod",
           "create",
           "--name",
           "mypod"
       ],
       "State": "Running",
       "Hostname": "mypod",
       "CreateCgroup": false,
       "CgroupParent": "/libpod_parent",
       "CgroupPath": "/libpod_parent/db99446fa9c6d10b973d1ce55a42a6850357e0cd447d9bac5627bb2516b5b19a",
       "CreateInfra": false,
       "InfraContainerID": "891c54f70783dcad596d888040700d93f3ead01921894bc19c10b0a03c738ff7",
       "SharedNamespaces": [
           "uts",
           "ipc",
           "net"
       ],
       "NumContainers": 2,
       "Containers": [
           {
               "Id": "891c54f70783dcad596d888040700d93f3ead01921894bc19c10b0a03c738ff7",
               "Name": "db99446fa9c6-infra",
               "State": "running"
           },
           {
               "Id": "effc5bbcfe505b522e3bf8fbb5705a39f94a455a66fd81e542bcc27d39727d2d",
               "Name": "myubi",
               "State": "running"
           }
       ]
    }
    

Остановка pods#

Для остановки одного или нескольких pods используйте команду podman pod stop.

  1. Остановите pod mypod:

    podman pod stop mypod
    
  2. Опционально: Выведите список всех pods и контейнеров, связанных с ними:

    podman ps -a --pod
    

    Пример вывода команды:

    CONTAINER ID  IMAGE                               COMMAND    CREATED             STATUS                    PORTS   NAMES               POD ID        PODNAME
    5df5c48fea87  registry.example.ru/ubi9/ubi:latest  /bin/bash  About a minute ago  Exited (0) 7 seconds ago          myubi               223df6b390b4  mypod
    
    3afdcd93de3e  registry.example.ru/9/pause                           About a minute ago  Exited (0) 7 seconds ago          8a4e6527ac9d-infra  223df6b390b4  mypod
    

    Pod mypod и контейнер myubi отображаются в статусе Exited.

Удаление pods#

Для удаления одного или нескольких остановленных pods и контейнеров используйте команду podman pod rm.

  1. Удалите pod mypod:

    podman pod stop mypod
    

    Обратите внимание, что при удалении pod автоматически удаляются все контейнеры внутри него.

  2. Опционально: Убедитесь, что все контейнеры удалены:

    podman ps
    
  3. Опционально: Убедитесь, что все pods удалены:

    podman pod ps