Podman o Pod Manager Tool es un motor de contenedores de código abierto sin demonio para desarrollar, gestionar y ejecutar contenedores OCI en nuestro sistema Linux. Podman ha emergido como una herramienta versátil de gestión de contenedores, ofreciendo una alternativa ligera a Docker, particularmente favorecida por aquellos que buscan una mayor seguridad y flexibilidad en sus entornos de contenedores.
En esta guía, vamos a ver los pasos para instalar Podman en Ubuntu 22.04, proporcionando un tutorial sencillo para principiantes y usuarios experimentados por igual. Tanto si es la primera vez que exploras la contenedorización como si quieres ampliar tus habilidades, este tutorial te proporcionará los conocimientos necesarios para aprovechar la potencia de Podman en tu entorno Ubuntu.
Requisitos
- Un servidor cloud corriendo con Ubuntu 22.04.
- Acceso root
Antes de empezar, es necesario actualizar tu sistema con la última versión para que puedas instalar Podman desde los repositorios de Ubuntu. Puedes hacerlo con el siguiente comando:
# apt-get update && apt-get upgrade -y
Una vez que tu sistema esté actualizado, puedes continuar con el siguiente paso.
Por defecto, Podman está disponible en el repositorio predeterminado de Ubuntu 22.04, por lo que puedes proceder con su instalación directamente. Os explicamos como instalar Podman con el repositorio de Ubuntu y con el PPA del proyecto oficial que asegura el acceso a las últimas versiones de Podman más allá de lo que se encuentra en los repositorios oficiales de Ubuntu 22.04.
Instala Podman con el siguiente comando:
# apt-get install podman
Verifica la versión:
# podman info
Para iniciar el proceso, tendrás que agregar el repositorio a tu sistema. Ejecuta el siguiente comando:
# add-apt-repository -y ppa:projectatomic/ppa
Actualiza los packages
# apt update
instala Podman con el siguiente comando:
# apt install podman
Verifica la versión:
# podman info
Una vez que Podman haya sido instalado, puedes comprobar toda la información con el siguiente comando:
# podman info
arch: amd64
buildahVersion: 1.23.1
cgroupControllers:
- cpuset
- cpu
- io
- memory
- hugetlb
- pids
- rdma
- misc
cgroupManager: systemd
cgroupVersion: v2
conmon:
package: 'conmon: /usr/bin/conmon'
path: /usr/bin/conmon
version: 'conmon version 2.0.25, commit: unknown'
cpus: 1
distribution:
codename: jammy
distribution: ubuntu
version: "22.04"
eventLogger: journald
hostname: podman
idMappings:
gidmap: null
uidmap: null
kernel: 5.15.0-25-generic
linkmode: dynamic
logDriver: journald
memFree: 473825280
memTotal: 2073772032
ociRuntime:
name: crun
package: 'crun: /usr/bin/crun'
path: /usr/bin/crun
version: |-
crun version 0.17
commit: 0e9229ae34caaebcb86f1fde18de3acaf18c6d9a
spec: 1.0.0
+SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +YAJL
os: linux
remoteSocket:
exists: true
path: /run/podman/podman.sock
security:
apparmorEnabled: true
capabilities: CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT
rootless: false
seccompEnabled: true
seccompProfilePath: /usr/share/containers/seccomp.json
selinuxEnabled: false
serviceIsRemote: false
slirp4netns:
executable: /usr/bin/slirp4netns
package: 'slirp4netns: /usr/bin/slirp4netns'
version: |-
slirp4netns version 1.0.1
commit: 6a7b16babc95b6a3056b33fb45b74a6f62262dd4
libslirp: 4.6.1
swapFree: 255995904
swapTotal: 255995904
uptime: 23m 5.45s
plugins:
log:
- k8s-file
- none
- journald
network:
- bridge
- macvlan
volume:
- local
registries: {}
store:
configFile: /etc/containers/storage.conf
containerStore:
number: 0
paused: 0
running: 0
stopped: 0
graphDriverName: overlay
graphOptions: {}
graphRoot: /var/lib/containers/storage
graphStatus:
Backing Filesystem: extfs
Native Overlay Diff: "true"
Supports d_type: "true"
Using metacopy: "false"
imageStore:
number: 0
runRoot: /run/containers/storage
volumePath: /var/lib/containers/storage/volumes
version:
APIVersion: 3.4.4
Built: 0
BuiltTime: Thu Jan 1 01:00:00 1970
GitCommit: ""
GoVersion: go1.18.1
OsArch: linux/amd64
Version: 3.4.4
Configurar los registros de configuración Podman
Podman soporta múltiples registros de los que puedes extraer imágenes de contenedores. Cuando se especifica el nombre del contenedor que no contiene un registro, Podman busca una lista de registros en el archivo de configuración del registro (/etc/containers/registries.conf) para extraer la imagen del contenedor.
Puedes añadir diferentes registros de imágenes de contenedores disponibles como docker.io(también puedes añadir otros registros) en el archivo de configuración.
Edita el archivo /etc/containers/registries.conf:
# nano /etc/containers/registries.conf
Pega el siguiente contenido al final del archivo y guarda.
[registries.search]
registries=["registry.access.redhat.com", "registry.fedoraproject.org", "docker.io"]
Trabajando con las imagenes Podman
En esta sección, te mostraremos cómo buscar, extraer imágenes y ejecutar un contenedor con el comando Podman
# podman search ubuntu-22.04
Deberías ver todas las imágenes de Ubuntu 22.04 en la siguiente salida:
Para extraer las imágenes de Podman puedes ejecutar el comando podman pull .
En el ejemplo sacaremos la última versión de la imagen de nginx: La salida muestra que la última versión de nginx se puede extraer de cualquiera de los 3 registros, tanto de docker, como redhat o fedoraproject.
# podman pull nginx
A continuación, para realizar alguna prueba, descarga y ejecuta la imagen de “hello-world” con el siguiente comando:
# podman run hello-world
Deberías ver el siguiente resultado:
Hello from Docker!
This message shows that your installation appears to be working correctly.
Este mensaje muestra que tu instalación está funcionando correctamente.
Para generar este mensaje, Docker ha realizado los siguientes pasos:
- El cliente Docker ha contactado con el demonio Docker.
- El demonio Docker ha cogido la imagen “hello-world” del Hub de Docker.
- El demonio de Docker ha creado un nuevo contenedor de esa imagen que corre en el ejecutable que produce el resultado que estás leyendo.
- El demonio de Docker ha llevado ese resultado al cliente Docker, que la envió a tu terminal.
Para intentar algo más ambicioso, puedes correr un contenedor Ubuntu:
Primero instalamos podman-docker
# apt install podman-docker
Ahora ejecuamos el siguiente comando para correr el contenedor.
# docker run -it ubuntu bash
Comparte imágenes, automatiza workflows y mucho más con un ID de Docker gratuito: https://hub.docker.com/
Para más ejemplos e ideas, puedes visitar: https://docs.docker.com/get-started/
A continuación, puedes ver la lista de imágenes descargadas con el siguiente comando:
# podman images
Para listar el contenedor Podman que se está ejecutando en el sistema, ejecuta el comando:
# podman ps -a
Recuerda, si tienes consultas sobre esta u otra cuestión relacionada con tus servidores en Clouding, no dudes en escribir a soporte@clouding.io ¡Estamos a tu lado para lo que necesites, consúltanos!