Podman (POD MANager) es una herramienta para administrar contenedores e imágenes, volúmenes montados en esos contenedores y pods creados a partir de grupos de contenedores. Podman ejecuta contenedores en Linux, pero también se puede utilizar en sistemas Mac y Windows utilizando una máquina virtual administrada por Podman. Podman se basa en libpod, una biblioteca para la gestión del ciclo de vida de los contenedores que también se encuentra en este repositorio. La biblioteca libpod proporciona API para administrar contenedores, pods, imágenes de contenedores y volúmenes.
Podman lanza una nueva versión, mayor o menor, 4 veces al año, durante la segunda semana de febrero, mayo, agosto y noviembre. Los lanzamientos de parches son más frecuentes y pueden ocurrir en cualquier momento para hacer llegar correcciones de errores a los usuarios. Todos los lanzamientos están firmados por PGP. Las claves públicas de los miembros del equipo aprobados para realizar lanzamientos se encuentran aquí.
Integración Continua:
GoDoc:
Descargas
A alto nivel, el alcance de Podman y libpod es el siguiente:
Soporte para múltiples formatos de imágenes de contenedores, incluidas imágenes OCI y Docker.
Gestión completa de esas imágenes, incluida la extracción de varias fuentes (incluidas la confianza y la verificación), la creación (construida a través de Containerfile o Dockerfile o confirmada desde un contenedor) y la inserción en registros y otros backends de almacenamiento.
Gestión completa del ciclo de vida del contenedor, incluida la creación (tanto a partir de una imagen como de un sistema de archivos raíz explotado), ejecución, control y restauración (a través de CRIU) y eliminación.
Gestión completa de la red de contenedores, utilizando Netavark.
Soporte para pods, grupos de contenedores que comparten recursos y se administran juntos.
Soporte para ejecutar contenedores y pods sin privilegios de root u otros privilegios elevados.
Aislamiento de recursos de contenedores y pods.
Soporte para una interfaz CLI compatible con Docker, que puede ejecutar contenedores localmente y en sistemas remotos.
Sin demonio administrador, para mejorar la seguridad y reducir la utilización de recursos en estado inactivo.
Soporte para una API REST que proporciona una interfaz compatible con Docker y una interfaz mejorada que expone la funcionalidad avanzada de Podman.
Soporte para ejecutar en Windows y Mac a través de máquinas virtuales ejecutadas por podman machine
.
Mejoras adicionales en podman machine
para admitir mejor Podman Desktop y otros casos de uso de desarrolladores.
Soporte para conmon-rs, que mejorará el registro de contenedores.
Soporte para la API BuildKit.
Mejoras de rendimiento y estabilidad.
Reducciones del tamaño del binario Podman.
Si cree que ha identificado un problema de seguridad en el proyecto, NO informe el problema públicamente a través del rastreador de problemas de GitHub, la lista de correo o IRC. En su lugar, envíe un correo electrónico con tantos detalles como sea posible a [email protected]
. Esta es una lista de correo privada para los mantenedores principales.
Para preguntas y debates generales, utilice los canales de Podman.
Para discusiones sobre problemas/errores y características, puede utilizar el sistema de seguimiento de problemas y relaciones públicas de GitHub.
También hay una lista de correo en lists.podman.io
. Puedes suscribirte enviando un mensaje a [email protected]
con el asunto subscribe
.
Podman se puede ejecutar fácilmente como un usuario normal, sin necesidad de un binario setuid. Cuando se ejecutan sin root, los contenedores Podman utilizan espacios de nombres de usuario para establecer la raíz en el contenedor para el usuario que ejecuta Podman. Rootless Podman ejecuta contenedores bloqueados sin privilegios que el usuario que ejecuta el contenedor no tenga. Algunas de estas restricciones se pueden eliminar (a través de --privileged
, por ejemplo), pero los contenedores sin raíz nunca tendrán más privilegios que el usuario que los lanzó. Si ejecuta Podman como su usuario y lo monta en /etc/passwd
desde el host, aún no podrá cambiarlo, ya que su usuario no tiene permiso para hacerlo.
Casi todas las funciones normales de Podman están disponibles, aunque existen algunas deficiencias. Cualquier versión reciente de Podman debería poder ejecutarse sin raíz sin ninguna configuración adicional, aunque su sistema operativo puede requerir alguna configuración adicional detallada en la guía de instalación.
Se requiere una pequeña configuración por parte de un administrador antes de poder utilizar Podman sin raíz; la configuración necesaria se documenta aquí.
Podman Desktop proporciona un entorno de desarrollo local para Podman y Kubernetes en máquinas Linux, Windows y Mac. Es una interfaz de usuario de escritorio con todas las funciones para Podman que utiliza el backend de la podman machine
en sistemas operativos que no son Linux para ejecutar contenedores. Admite la gestión completa del ciclo de vida de los contenedores (creación, extracción y envío de imágenes, creación y gestión de contenedores, creación y gestión de pods y trabajo con Kubernetes YAML). El proyecto se desarrolla en GitHub y se aceptan contribuciones.
Firma especializada y envío de imágenes a varios backends de almacenamiento. Consulte Skopeo para esas tareas.
Soporte para la interfaz CRI de Kubernetes para la gestión de contenedores. El demonio CRI-O se especializa en eso.
Podman utiliza proyectos OCI y las mejores bibliotecas para diferentes aspectos:
Tiempo de ejecución: utilizamos las herramientas de tiempo de ejecución de OCI para generar configuraciones de tiempo de ejecución de OCI que se pueden usar con cualquier tiempo de ejecución compatible con OCI, como crun y runc.
Imágenes: la gestión de imágenes utiliza los contenedores/biblioteca de imágenes.
Almacenamiento: el almacenamiento de contenedores e imágenes se gestiona mediante contenedores/almacenamiento.
Redes: soporte de redes mediante el uso de Netavark y Aardvark. Las redes desarraigadas se manejan a través de pasta o slirp4netns.
Compilaciones: las compilaciones son compatibles a través de Buildah.
Conmon: Conmon es una herramienta para monitorear los tiempos de ejecución de OCI, utilizada tanto por Podman como por CRI-O.
Seccomp: una política de Seccomp unificada para Podman, Buildah y CRI-O.
Para blogs, anuncios de lanzamientos y más, visite el sitio web podman.io.
Notas de instalación Información sobre cómo instalar Podman en su entorno.
Soporte de ganchos OCI Información sobre cómo Podman configura los ganchos OCI para que se ejecuten al iniciar un contenedor.
Documentación de la API de Podman sobre la API REST de Podman.
Comandos de Podman Una lista de los comandos de Podman con enlaces a sus páginas de manual y, en muchos casos, videos que muestran los comandos en uso.
Imágenes del contenedor Podman Información sobre las imágenes del contenedor Podman que se encuentran en quay.io.
Guía de solución de problemas de Podman Una lista de problemas y soluciones comunes para Podman.
Transferencia de uso de Podman Información útil para operaciones y transferencia de desarrollo en relación con la infraestructura que utiliza Podman. Esta página incluye tablas que muestran los comandos de Docker y sus comandos equivalentes de Podman.
Tutoriales Tutoriales sobre el uso de Podman.
Cliente remoto Una breve guía sobre cómo utilizar el cliente remoto Podman.
Configuración básica y uso de Podman en un entorno Rootless Un tutorial que muestra la configuración necesaria para ejecutar Rootless Podman.
Notas de la versión Notas de la versión para versiones recientes de Podman.
Contribuyendo Información sobre cómo contribuir a este proyecto.
Buildah y Podman son dos proyectos complementarios de código abierto que están disponibles en la mayoría de las plataformas Linux y ambos proyectos se encuentran en GitHub.com con Buildah aquí y Podman aquí. Tanto Buildah como Podman son herramientas de línea de comandos que funcionan en imágenes y contenedores de Open Container Initiative (OCI). Los dos proyectos se diferencian por su especialización.
Buildah se especializa en la creación de imágenes OCI. Los comandos de Buildah replican todos los comandos que se encuentran en un Dockerfile. Esto permite crear imágenes con y sin Dockerfiles sin requerir ningún privilegio de root. El objetivo final de Buildah es proporcionar una interfaz coreutils de nivel inferior para crear imágenes. La flexibilidad de crear imágenes sin Dockerfiles permite la integración de otros lenguajes de programación en el proceso de construcción. Buildah sigue un modelo simple fork-exec y no se ejecuta como un demonio, pero se basa en una API integral en golang, que se puede distribuir en otras herramientas.
Podman se especializa en todos los comandos y funciones que le ayudan a mantener y modificar imágenes OCI, como extraer y etiquetar. También le permite crear, ejecutar y mantener aquellos contenedores creados a partir de esas imágenes. Para crear imágenes de contenedores a través de Dockerfiles, Podman utiliza la API golang de Buildah y se puede instalar independientemente de Buildah.
Una diferencia importante entre Podman y Buildah es su concepto de contenedor. Podman permite a los usuarios crear "contenedores tradicionales" cuya intención es que estos contenedores tengan una larga vida útil. Mientras que los contenedores de Buildah en realidad simplemente se crean para permitir que el contenido se vuelva a agregar a la imagen del contenedor. Una forma sencilla de pensarlo es que el comando buildah run
emula el comando RUN en un Dockerfile, mientras que el comando podman run
emula el comando docker run
en funcionalidad. Debido a esto y a sus diferencias de almacenamiento subyacentes, no puede ver los contenedores Podman desde Buildah o viceversa.
En resumen, Buildah es una forma eficiente de crear imágenes OCI, mientras que Podman le permite administrar y mantener esas imágenes y contenedores en un entorno de producción utilizando comandos cli de contenedor familiares. Para obtener más detalles, consulte la Guía de herramientas de contenedor.
$ podman run quay.io/podman/hello Trying to pull quay.io/podman/hello:latest... Getting image source signatures Copying blob a6b3126f3807 done Copying config 25c667d086 done Writing manifest to image destination Storing signatures !... Hello Podman World ...! .--"--. / - - / (O) (O) ~~~| -=(,Y,)=- | .---. /` |~~ ~/ o o ~~~~.----. ~~ | =(X)= |~ / (O (O) ~~~~~~~ ~| =(Y_)=- | ~~~~ ~~~| U |~~ Project: https://github.com/containers/podman Website: https://podman.io Documents: https://docs.podman.io Twitter: @Podman_io