GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Podman vs Docker:Todo lo que necesitas saber

Introducción

La contenedorización ofrece a los desarrolladores una forma de probar, crear e implementar aplicaciones de forma optimizada. Los beneficios de los contenedores incluyen portabilidad, consistencia, eficiencia y menos gastos generales en comparación con las máquinas virtuales tradicionales.

Durante mucho tiempo, Docker ha sido el motor de gestión de contenedores más popular del mercado. Sin embargo, a medida que la contenedorización se convirtió en la norma en el mundo DevOps, surgieron competidores como Podman.

Este artículo comparará dos motores de administración de contenedores:Docker y Podman. También lo ayudará a elegir el motor adecuado para sus necesidades.

Podman frente a Docker:Definiciones

¿Qué es Docker?

Docker es una plataforma popular para crear, implementar y administrar contenedores. Los contenedores Docker permiten a los desarrolladores aplicar un enfoque independiente del sistema para la implementación de software. Dado que Docker ejecuta los mismos contenedores docker en cualquier sistema operativo, las aplicaciones en contenedores son multiplataforma.

¿Qué es Podman?

Podman es un motor de contenedores sin raíces y sin demonios desarrollado por RedHat, diseñado como una alternativa a Docker. El diseño modular permite que Podman use componentes individuales del sistema solo cuando sea necesario. Su enfoque sin raíz para la administración de contenedores permite que los usuarios que no son raíz ejecuten los contenedores.

Podman vs. Docker:Comparación

En la siguiente sección, el artículo profundizará en las similitudes y diferencias entre Podman y Docker.

Arquitectura

Docker utiliza arquitectura cliente-servidor. El demonio Docker es un proceso en segundo plano persistente que administra contenedores y mantiene la comunicación entre el cliente y el servidor. La salida de la docker version El comando muestra secciones separadas para las versiones del cliente y del servidor.

Podman gestiona contenedores usando el modelo fork-exec. Dado que Podman es un proceso y no utiliza el paradigma cliente-servidor, no requiere un demonio para ejecutarse. Los contenedores Podman son procesos secundarios del proceso Podman principal. Usando la podman version El comando muestra que Podman enumera solo un número de versión.

La unidad principal de la arquitectura Podman es un contenedor. Sin embargo, Podman también introduce el concepto de pod. Al igual que los pods de Kubernetes, los pods de Podman son grupos de uno o más contenedores que comparten los mismos recursos del sistema. El pod consiste en el contenedor principal y los contenedores sidecar que lo soportan.

Facilidad de uso

Docker cuenta con un conjunto completo de comandos sencillos e intuitivos. Con Docker, los desarrolladores pueden crear, implementar y administrar fácilmente aplicaciones en contenedores.

Podman fue creado para reemplazar a la perfección a Docker en un flujo de trabajo de desarrollo de software, por lo que sus comandos son en su mayoría los mismos que los de Docker. Por ejemplo, el docker pull el comando se convierte en podman pull :

Además de que Podman hereda la facilidad de uso de Docker, la similitud entre las dos herramientas también significa que la migración de Docker a Podman requiere poco esfuerzo.

Privilegios de raíz

Docker requiere privilegios de root para comunicarse con el daemon ya que el daemon siempre se ejecuta como usuario root. Si un usuario no es miembro de docker build grupo Unix, deben ejecutar los comandos de Docker usando el comando sudo. Es posible ejecutar Docker en modo sin raíz, pero requiere la instalación de paquetes adicionales y controladores de almacenamiento específicos.

Podman es desarraigado por diseño. Gracias a su arquitectura modular, es posible otorgar diferentes privilegios a diferentes usuarios.

Imágenes de construcción

Docker utiliza la compilación docker build Comando para crear imágenes de contenedor a partir de un dockerfile y un contexto de compilación. El contexto de compilación es un conjunto de archivos especificados en el archivo acoplable que se usa en la creación del contenedor.

Podman incluye la podman build comando que funciona usando una sintaxis similar a docker build .

Sin embargo, Podman usa Buildah , otra herramienta de código abierto, para realizar el proceso de construcción. Cuando podman build se ejecuta, el buildah bud (build-using-dockerfile) se llama al comando para emular docker build comando.

Contenedores en ejecución

Cuando Docker recibe el comando de ejecución de la ventana acoplable, realiza varias acciones:

  1. Comprueba si la imagen especificada por el usuario existe localmente. Si no, extrae la imagen de los registros configurados.
  2. Crea una capa contenedora en la que se puede escribir encima de la imagen.
  3. Inicia el contenedor.

Ejecución de contenedores con Podman se realiza usando el podman run comando, que funciona de la misma manera que docker run . Uno de los principales beneficios de Podman en comparación con Docker es que Podman se integra completamente con systemd por defecto. Esto permite que Podman ejecute systemd dentro del contenedor listo para usar.

Docker Swarm y Docker Compose

Enjambre Docker es una plataforma de orquestación de contenedores utilizada para administrar contenedores Docker. Permite a los desarrolladores ejecutar un clúster de nodos Docker e implementar una aplicación escalable sin necesidad de otras dependencias.

Podman no es compatible con Docker Swarm. Sin embargo, los usuarios de Podman pueden usar herramientas como Nomad, que viene con un controlador de Podman.

Docker Compose es una herramienta para administrar entornos de aplicaciones de varios contenedores. Automatiza el inicio y la gestión de contenedores, lo que lo hace útil como parte de un ciclo de vida de desarrollo de software (SDLC).

A partir de la versión 3.0, Podman es compatible con Docker Compose. Las versiones anteriores de Podman no tenían una forma de simular el demonio Docker necesario para que Docker Compose funcionara, por lo que usaban alternativas menos fáciles de usar como Podman Compose. Sin embargo, Podman 3.0 presenta podman.socket , un socket UNIX que reemplaza al demonio Docker.

Seguridad

Docker es, por diseño, considerado una herramienta segura, especialmente cuando los procesos son ejecutados por usuarios sin privilegios. No se recomienda ejecutar contenedores en modo privilegiado desde una perspectiva de seguridad.

Al igual que con cualquier otra herramienta, Docker se vuelve aún más seguro si los usuarios aplican las mejores prácticas de seguridad. La seguridad de Docker se puede aumentar aún más al habilitar AppArmor, SELinux y GRSEC.

Podman La arquitectura fork-exec de hace que sea una solución aún más segura que Docker. El modelo fork-exec permite que el sistema registre correctamente al usuario que modifica los archivos del sistema, mientras que el enfoque cliente-servidor utilizado por Docker no lo hace. Por lo tanto, Podman permite un registro de auditoría más profundo.

Los contenedores sin raíz son otra característica de Podman que mejora la seguridad general del sistema. Poder asignar privilegios específicos a usuarios específicos permite a los administradores tener un mejor control de acceso a los componentes críticos del servidor.

Podman frente a Docker:cómo elegir

Elija Docker si:

  • Prefieres una herramienta bien documentada . La principal ventaja de Docker sobre Podman es su uso generalizado. Una gran cantidad de soporte relacionado con Docker disponible en línea significa que buscar en Internet puede resolver muchos problemas potenciales.
  • Necesita soporte de orquestación de contenedores . La compatibilidad con Docker Swarm es otro beneficio importante de Docker. Los usuarios que quieran orquestar contenedores Podman deben recurrir a alternativas que no son tan ricas en funciones como Docker Swarm o sumergirse en Kubernetes, que tiene una curva de aprendizaje pronunciada y puede resultar demasiado complejo para proyectos más simples.

Elija Podman si:

  • Haces hincapié en la seguridad . La arquitectura de Podman es inherentemente más segura que la de Docker.
  • Planeas cambiarte a Kubernetes más adelante . Podman presenta el concepto de pod, lo que lo convierte en un buen punto de partida para Kubernetes.

Dado que tanto Docker como Podman son compatibles con OCI, también es posible usarlos en paralelo. Por ejemplo, la solidez de Docker puede emplearse en máquinas de desarrollo, mientras que los entornos de desarrollo, int y producción pueden beneficiarse de la mayor seguridad de Podman.


Ubuntu
  1. Todo lo que necesita saber sobre Ubuntu 13.04

  2. Todo lo que necesita saber sobre CentOS Stream

  3. Lanzamiento de Fedora 30, aquí está todo lo que necesita saber

  4. Directorio tmp de Linux:todo lo que necesita saber

  5. Servidor Ubuntu Lo que necesita saber

Todo lo que necesita saber sobre el servidor Linux Ubuntu

Todo lo que necesita saber sobre el servidor Linux OpenSSH

Todo lo que necesita saber sobre el sistema operativo Linux Zorin

Todo lo que necesita saber sobre el sistema operativo Peppermint Linux

Todo lo que necesita saber sobre la distribución Linux Mint

Todo lo que necesita saber sobre los inodos en Linux

    Docker Podman
    Demonio Utiliza el demonio Docker Arquitectura sin demonios
    Raíz Ejecuta contenedores solo como root Ejecuta contenedores como root y no root
    Imágenes Puede crear imágenes de contenedores Utiliza Buildah para crear imágenes de contenedores
    Plataforma monolítica No
    Docker-enjambre Compatible No compatible
    Docker-compose Compatible Compatible
    Se ejecuta de forma nativa en Linux, macOS, Windows Linux, macOS, Windows (con WSL)