GNU/Linux >> Tutoriales Linux >  >> Fedora

Cómo instalar y usar Podman en Fedora 34/35

Podman complementa Buildah y Skopeo al ofrecer una experiencia similar a la línea de comandos de Docker:permite a los usuarios ejecutar contenedores independientes (no orquestados). Y Podman no requiere un daemon para ejecutar contenedores y pods, por lo que podemos despedirnos fácilmente de los grandes y gordos daemons. No hay demonios en segundo plano haciendo cosas, y esto significa que Podman se puede integrar en los servicios del sistema a través de systemd .

En esta guía aprenderemos a instalar Podman en Fedora.

Publicaciones relacionadas

  • Cómo instalar y usar Podman en Debian 11
  • Cómo instalar y usar Podman en Rocky Linux/Alma Linux/Centos 8
  • Cómo instalar y usar Podman en OpenSUSE Leap 15.3
  • Cómo instalar y configurar docker en Rocky Linux/Centos 8
  • Introducción a Docker Compose con ejemplos
  • Docker como agente de compilación:ejecute compilaciones de Jenkins en Docker

Requisitos

Para seguir, asegúrese de tener lo siguiente:

  • Un servidor/estación de trabajo Fedora actualizado
  • Acceso root o Usuario con acceso sudo
  • Acceso a Internet

Tabla de contenido

  1. Asegurarse de que el servidor esté actualizado
  2. Instalando podman
  3. Ejemplos de línea de comando
  4. Contenedor persistente Runa postgres
  5. Administrar contenedores como servicios del sistema a través de systemd y Podman

1. Asegurarse de que el servidor esté actualizado

Use este comando para asegurarse de que nuestros paquetes de servidor estén actualizados

sudo dnf update -y

Asegurémonos de que los paquetes comunes estén instalados

sudo dnf install -y vim

2. Instalando Podman

Podman está disponible en los repositorios predeterminados de Fedora. Instálalo usando este comando:

sudo dnf install -y podman

Este comando instalará Podman y también sus dependencias.

Eso es todo. Ahora ya podemos jugar con Podman.

3. Ejemplos de línea de comandos

Exploremos la ejecución de Rocky Linux Container usando podman.

En Docker, usaríamos este comando para ejecutar un contenedor Rocky Linux:

docker run -it fedora:35 sh

Esto fallará ya que no hay docker comando en mi máquina Fedora. Podemos reemplazar docker con podman:

podman run -it fedora:35 sh

Ejecutemos algunos comandos para confirmar que funciona como se esperaba:

$ podman run -it fedora:35 sh
Resolved "fedora" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull registry.fedoraproject.org/fedora:35...
Getting image source signatures
Copying blob 791199e77b3d done
Copying config 1b52edb081 done
Writing manifest to image destination
Storing signatures
sh-5.1# whoami
root
sh-5.1# exit
exit

Para verificar el estado del contenedor, use podman ps comando

$ podman ps -a
CONTAINER ID  IMAGE                                 COMMAND     CREATED         STATUS                     PORTS       NAMES
cd8f63c2e3f2  registry.fedoraproject.org/fedora:35  sh          50 seconds ago  Exited (0) 17 seconds ago              musing_ishizaka

Para eliminar el contenedor, use podman rm :

$ podman rm cd8f63c2e3f2
cd8f63c2e3f2fe5799d619104522892fca3ada2d3a5b7e4601648ac0de20cb89

Para enumerar las imágenes:

$ podman images
REPOSITORY                         TAG         IMAGE ID      CREATED      SIZE
registry.fedoraproject.org/fedora  35          1b52edb08181  11 days ago  159 MB

Podemos eliminar la imagen usando la imagen podman image rm comando:

$ podman image rm fedora
Untagged: registry.fedoraproject.org/fedora:35
Deleted: 1b52edb0818147bea39780625ec01ab46944284acf16d8bcfa4055f8a854a9f5

De lo anterior, podemos confirmar que el comando podman usa la misma sintaxis que docker

4. Ejecute un contenedor persistente de Postgres

A continuación, exploremos cómo podemos ejecutar un contenedor persistente. En este ejemplo, ejecutaremos un contenedor de Postgres 14 y montaremos los datos de Postgres en un volumen local para que pueda persistir en los reinicios. Dado que los contenedores son efímeros, los datos se perderán si no los guardamos en un volumen local.

Extraiga docker.io/library/postgres:14.0-alpine imagen

$ podman pull docker.io/library/postgres:14.0-alpine
Trying to pull docker.io/library/postgres:14.0-alpine...
Getting image source signatures
Copying blob 3da258773353 done
Copying blob 5034a66b99e6 done
Copying blob 82e9eb77798b done
Copying blob a0d0a0d46f8b done
Copying blob ccd761727716 done
Copying blob c6b2245b2f36 done
Copying blob 028554d3b6cc done
Copying blob 2c7ee7bc69e8 done
Copying config 87440f4e7f done
Writing manifest to image destination
Storing signatures
87440f4e7f9e60607dc11a4f0590a1c69b3a1c075211df478e22b0c27fb263e6

Confirmar imágenes

$ podman images
REPOSITORY                  TAG          IMAGE ID      CREATED      SIZE
docker.io/library/postgres  14.0-alpine  87440f4e7f9e  2 weeks ago  198 MB

Inspeccione la imagen con

$ podman inspect 87440f4e7f9e

Configuremos una carpeta que manejará los datos de Postgres una vez que iniciemos nuestro contenedor:

$ mkdir -p ~/apps/postgres/data

Ejecutarlo

podman run -d \
    -p 5432:5432 \
    -v ~/apps/postgres/data:/var/lib/postgresql/data \
    -e POSTGRES_PASSWORD=Sup3rSecre7 \
    -e POSTGRES_USER=citizix_user \
    -e POSTGRES_DB=citizix_db \
    docker.io/library/postgres:14.0-alpine

Esta es mi salida

$ podman run -d \
    -p 5432:5432 \
    -v ~/apps/postgres/data:/var/lib/postgresql/data \
    -e POSTGRES_PASSWORD=Sup3rSecre7 \
    -e POSTGRES_USER=citizix_user \
    -e POSTGRES_DB=citizix_db \
    docker.io/library/postgres:14.0-alpine
dc5117faeb431c021f54a60e6303707fe7b48aef199fe53b751236eaf2c08136

Comprobar procesos:

$ podman ps
CONTAINER ID  IMAGE                                   COMMAND     CREATED        STATUS            PORTS                   NAMES
dc5117faeb43  docker.io/library/postgres:14.0-alpine  postgres    9 seconds ago  Up 9 seconds ago  0.0.0.0:5432->5432/tcp  cool_hermann

Confirme los registros del contenedor con esto. Puedes ver que está inicializando la base de datos

$ podman logs dc5117faeb43 | head
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok

Conectémonos a la base de datos y hagamos algunas operaciones

$ podman exec -it dc5117faeb43 /bin/bash
bash-5.1# psql -U citizix_user -d citizix_db;
psql (14.0)
Type "help" for help.

citizix_db=# select version();
                                                   version
--------------------------------------------------------------------------------------------------------------
 PostgreSQL 14.0 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
(1 row)

citizix_db=#

A continuación, exploremos matar y eliminar el contenedor. Podemos usar podman kill para detener el contenedor. Esto detendrá el contenedor, pero aún estará allí. Usa podman ps -a  Listar. Para eliminarlo por completo, podman rm -f .

$ podman kill dc5117faeb43
dc5117faeb43

$ podman ps -a
CONTAINER ID  IMAGE                                   COMMAND     CREATED        STATUS                           PORTS                   NAMES
dc5117faeb43  docker.io/library/postgres:14.0-alpine  postgres    3 minutes ago  Exited (137) About a minute ago  0.0.0.0:5432->5432/tcp  cool_hermann

$ podman rm -f dc5117faeb43
dc5117faeb431c021f54a60e6303707fe7b48aef199fe53b751236eaf2c08136

5. Administrar contenedores como servicios del sistema a través de systemd y Podman

Podemos administrar contenedores podman a través de systemd. Vamos a crear un systemd archivo de recursos para manejar el contenedor de postgres que acabamos de crear arriba.

Cree un archivo podman de postgres:

sudo vim /etc/systemd/system/postgres-podman.service

Añadir este contenido

[Unit]
Description=Custom Postgres Podman Container
After=network.target

[Service]
Type=simple
TimeoutStartSec=5m
ExecStartPre=-/usr/bin/podman rm -f postgrespodman

ExecStart=/usr/bin/podman run \
    -p 5432:5432 \
    -v /home/fedora/apps/postgres/data:/var/lib/postgresql/data \
    -e POSTGRES_PASSWORD=Sup3rSecre7 \
    -e POSTGRES_USER=citizix_user \
    -e POSTGRES_DB=citizix_db \
    docker.io/library/postgres:14.0-alpine

ExecReload=-/usr/bin/podman stop postgrespodman
ExecReload=-/usr/bin/podman rm postgrespodman
ExecStop=-/usr/bin/podman stop postgrespodman
Restart=always
RestartSec=30

[Install]

Entonces podemos recargar el systemd catalogar e iniciar el servicio:

sudo systemctl daemon-reload
sudo systemctl start postgres-podman

Confirmar el estado del servicio

$ sudo systemctl status postgres-podman
● postgres-podman.service - Custom Postgres Podman Container
     Loaded: loaded (/etc/systemd/system/postgres-podman.service; static)
     Active: active (running) since Mon 2021-11-15 05:20:35 UTC; 5s ago
    Process: 29565 ExecStartPre=/usr/bin/podman rm -f postgrespodman (code=exited, status=1/FAILURE)
   Main PID: 29596 (podman)
      Tasks: 15 (limit: 4585)
     Memory: 262.3M
        CPU: 5.362s
     CGroup: /system.slice/postgres-podman.service
             ├─29596 /usr/bin/podman run -p 5432:5432 -e POSTGRES_PASSWORD=Sup3rSecre7 -e POSTGRES_USER=citizix_user -e POSTGRES_DB=citizix_db docker.io/library/postgres:14.0-alpine
             └─29646 storage-untar / /var/lib/containers/storage/overlay/772aeee45322a287d8cfed4d3a774519a5a1bfb20750bf46584a8f7a9713fcaf/diff

Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:82e9eb77798bd506a06a9adab733c822c718be829c54d514b5789b07c0f1c164
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:c6b2245b2f36c7d2a1e9071eeede220cca1f2e0662350115a22e7cac7f973a8c
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:ccd761727716597fddb7d24aa4d7d68b3b638897b9351ccc295aa86407bd85e6
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:5034a66b99e67db609bf6b4f82bea915e39a42e6f03d11889f7406b4de9e99da
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:a0d0a0d46f8b52473982a3c466318f479767577551a53ffc9074c9fa7035982e
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:3da258773353ad3725cb0ef73e28bd60fdd9078df3790b06b98198a86ef0424f
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:2c7ee7bc69e85f0517dccf3edfa293c2bfc147e3794ab403fda249c2e59a58ab
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:028554d3b6ccc72641ab3b2a68597bf04cdbb49e03bb977c69198fd35c098e87
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:2c7ee7bc69e85f0517dccf3edfa293c2bfc147e3794ab403fda249c2e59a58ab
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:028554d3b6ccc72641ab3b2a68597bf04cdbb49e03bb977c69198fd35c098e87

¡Acabamos de configurar un servicio de sistema personalizado basado en un contenedor administrado a través de Podman!

Conclusión

Logramos explorar cómo instalar Podman en nuestro servidor Rocky Linux/Centos 8 en esta guía.


Fedora
  1. Cómo instalar Apache Maven en Fedora 35/34

  2. Cómo instalar Gradle en Fedora 35/34

  3. Cómo instalar y usar Docker en Ubuntu 20.04

  4. Cómo instalar y usar Podman en Fedora 34/35

  5. Cómo instalar Docker en Fedora 32 o 31 (y alternativas)

Cómo instalar y configurar Drupal en Fedora 35/34

Cómo instalar TeamViewer en Fedora 35/34

Cómo instalar y usar Telnet en Fedora 35

Cómo instalar y usar Docker en Ubuntu 22.04

Cómo instalar y usar Podman (alternativa de Docker)

Cómo instalar y usar Docker en AlmaLinux 8