GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

¿Qué es Podman y en qué se diferencia de Docker?

Podman es un motor de contenedores que es compatible con la especificación OCI Containers. Podman es parte de RedHat Linux, pero también se puede instalar en otras distribuciones.

Como es compatible con OCI, Podman se puede usar como un reemplazo directo para el tiempo de ejecución de Docker más conocido. La mayoría de los comandos de Docker se pueden traducir directamente a comandos de Podman.

A continuación se muestra cómo se comparan los dos tiempos de ejecución.

¿Qué es un tiempo de ejecución?

Para mucha gente, un "contenedor" sigue siendo un "contenedor Docker". Esta no es una representación precisa del ecosistema de contenedores actual. Docker produce imágenes de contenedores OCI, que se pueden usar con otros tiempos de ejecución compatibles. Kubernetes es un ejemplo, mientras que Podman es otro.

Como consecuencia, Podman y Docker tienen una funcionalidad central superpuesta. Ambos producen imágenes que el otro puede usar para ejecutar contenedores. Luego, los dos tiempos de ejecución agregan sus propias especialidades además de las funciones básicas de creación de contenedores.

Cómo instalar Podman

Si está utilizando RedHat Linux, Podman está en los extras repositorio. Usar subscription-manager para agregar el repositorio. Entonces podrá usar yum para instalar Podman.

su -
subscription-manager repos --enable rhel-7-server-extras-beta-rpms
yum -y install podman

La mayoría de las otras distribuciones populares de Linux también incluyen Podman en sus repositorios predeterminados. Puede apt install podman , dnf install podman o pacman -S podman para instalarlo.

Trabajar con Contenedores e Imágenes

La CLI de Podman está deliberadamente alineada con la de Docker. Eso significa que puede usar los comandos familiares de Docker para interactuar con los contenedores de Podman:

podman pull my-image:latest

podman run my-image:latest --name my-container

podman ps

podman rm my-container

Podman debería ser instantáneamente familiar para los usuarios de Docker. Podría alias docker a podman y no notar una diferencia en el uso diario. Por supuesto, no todas las funciones están disponibles; sin embargo, intentar usar los comandos de Docker Swarm generará un error, ya que Podman no tiene nada equivalente a Swarm.

¿Qué tiene de diferente Podman?

Si bien se parece a Docker, Podman tiene algunas diferencias distintivas. Primero y posiblemente más significativo es su arquitectura. Podman es sin demonios —no existe un proceso de larga duración para administrar sus contenedores.

Cuando ejecutas un podman comando, está interactuando directamente con el proceso que está iniciando sus contenedores y obteniendo sus imágenes. La CLI de Docker depende de una conexión con el demonio de Docker. La CLI envía comandos al daemon, y el daemon luego actúa sobre ellos para crear contenedores.

El modelo de Podman ayuda a abordar algunas de las preocupaciones sobre la seguridad de Docker. La falta de un demonio reduce considerablemente la superficie de ataque del contenedor. Si necesita acceso remoto, Podman expone una API REST que le permite interactuar con todos los tipos de recursos admitidos.

vainas

Podman viene con características únicas de las que Docker carece por completo. En Podman, los contenedores pueden formar "cápsulas" que funcionan juntas. Es similar al concepto de Kubernetes Pod.

Para crear un Pod, use el pod create comando:

podman pod create --name my-pod

Los contenedores se agregan a los pods al incluir el --pod marcar con podman run :

podman run --pod my-pod --name image-1 my-image:latest
podman run --pod my-pod --name image-2 another-image:latest

Los contenedores en el Pod se pueden administrar en conjunto mediante el uso de podman pod comandos:

podman kill my-pod      # Kill all containers
podman restart my-pod   # Restart all containers
podman stop my-pod      # Stop all containers

El concepto de Pod es poderoso, ya que le permite administrar múltiples contenedores en conjunto. Puede crear contenedores de aplicaciones, como un frontend, un backend y una base de datos, agregarlos a un Pod y administrarlos al unísono.

Lo más cerca que Docker llega a esto es con Compose. El uso de Compose requiere que escriba un docker-compose.yml archivo y use el docker-compose separado binario. Podman te permite crear Pods usando un comando sin salir de la terminal.

Cuando necesite exportar la definición de un Pod, Podman producirá un manifiesto YAML compatible con Kubernetes. Puede tomar el manifiesto y aplicarlo directamente a un clúster de Kubernetes. Esto reduce la brecha entre ejecutar un contenedor en desarrollo y lanzarlo a la infraestructura de producción.

podman generate kube

Contenedores sin raíz

Podman admite contenedores sin raíz. Esto lo ayuda a proteger su seguridad al evitar que los contenedores se ejecuten como la root del host. usuario. Docker ahora admite el modo sin raíz como una opción de configuración del demonio. Podman había desarraigado antes de Docker y pone un mayor énfasis en su uso.

Primero, instala slirp4netns :

yum install slirp4netns

A continuación, configure una cantidad de espacios de nombres de red con ámbito de usuario:

echo "user.max_user_namespaces=28633" > /etc/sysctl.d/userns.conf
sysctl -p /etc/sysctl.d/userns.conf

Este comando permite el uso de espacios de nombres de red sin ser root .

Ahora, ¡está listo para ejecutar un contenedor sin raíces! Conéctese al servidor como un usuario normal. Inicie un nuevo contenedor con podman run . Se creará con el UID de su cuenta de usuario en lugar de root .

Además de los espacios de nombres sin raíz, podman está en el ámbito del usuario actual de forma predeterminada. Sus imágenes y contenedores se almacenan en el $HOME de su usuario carpeta. Cuando ejecutas podman ps o podman images , solo verás tu contenido en lugar de cada recurso en el sistema.

Conclusión

Podman es un tiempo de ejecución de contenedor compatible con OCI que funciona sin un demonio. La CLI implementa todos los comandos básicos de Docker. Puede pasar fácilmente a Podman o usarlo junto con una instalación de Docker existente.

A diferencia de Docker, Podman tiene soporte de primera clase para administrar múltiples contenedores. El modelo Pod facilita el trabajo con una pila de servicios. Puede detener, reiniciar y eliminar todos los contenedores asociados mediante comandos a nivel de pod.

Podman también está listo para ayudarlo a dar el salto a los servicios de orquestación de contenedores. La capacidad de exportar YAML compatible con Kubernetes hace que Podman se parezca más a muchos entornos de producción en contenedores. Los desarrolladores y operadores pueden utilizar la misma herramienta para administrar sus contenedores, lo que permite una mayor colaboración y flexibilidad.


Docker
  1. Cómo exportar e importar contenedores Docker

  2. Cómo instalar Docker y ejecutar contenedores Docker en Ubuntu

  3. Cómo crear una imagen de Docker a partir de un contenedor y un archivo Docker

  4. Cómo hacer una copia de seguridad y restaurar contenedores Docker

  5. Cómo pausar y reanudar contenedores Docker

¿Qué es Docker?

¿Qué es VDI y cómo funciona?

¿Qué es Docker? ¿Como funciona?

¿Qué es Docker Compose y cómo se usa?

Cómo eliminar contenedores Docker

Cómo detener los contenedores de Docker