Diferencia entre revisiones de «Contenedores con podman»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
(Construir una imagen a partir de un fichero Dockerfile)
Línea 38: Línea 38:
 
=Construir una imagen a partir de un fichero Dockerfile=
 
=Construir una imagen a partir de un fichero Dockerfile=
  
Seguimos los mismos pasos que si creáramos una imagen a partir de un fichero con docker. Para ello, podman hace uso de los mismos Dockerfiles, sin hacer modificaciones. Lo podemos comprobar con el Dockerfile de ejemplo de aplicaciones hug usado [https://1984.lsi.us.es/wiki-ssoo/index.php/Contenedores aquí]. Con un editor de textos, como nano (que no viene por defecto instalado en la versión 31 de Fedora), creamos estos dos ficheros:
+
Seguimos los mismos pasos que si creáramos una imagen a partir de un fichero con docker. Para ello, podman hace uso de los mismos Dockerfiles, sin hacer modificaciones. Lo podemos comprobar con el Dockerfile de ejemplo de aplicaciones hug usado [https://1984.lsi.us.es/wiki-ssoo/index.php/Contenedores aquí]. Con un editor de textos, como nano (que no viene por defecto instalado en la versión 31 de Fedora).
 +
 
 +
Para descargar nano:
 +
<syntaxhighlight lang="bash">
 +
sudo dnf install nano
 +
</syntaxhighlight>
  
 
Dockerfile:
 
Dockerfile:

Revisión del 20:30 29 ene 2020

A primera vista, Podman es muy similar a Docker. Tan parecido es su uso que, para usar los comandos de podman, tan sólo tendremos que usar los de Docker y cambiar la palabra "docker" por "podman". Si queremos hacer esta sustitución automática, de forma que, aun poniendo docker, funcione podman, ejecutamos el siguiente comando:

alias docker=podman

(recomendado en la propia página de podman: https://podman.io/whatis.html)

Sin embargo, a pesar de que casi todos los comandos se pueden transcribir tal cuál de docker a podman, el segundo tiene diferencias en cuanto a su funcionamiento.

Diferencias de Podman y Docker

  • La primera diferencia que nos encontramos, respecto a Docker, es que Podman no tiene servicio.
  • Podman no hace uso de un demonio.
  • En podman, un usuario sólo puede ver y utilizar las imágenes y contenedores que han sido descargadas por este mismo usuario. Por esto mismo,podemos hacer uso de podman sin ser necesariamente los administradores del sistema.
  • Podman no posee todavía una herramienta de orquestación de contenedores oficial, ya que consideran que, por defecto, para esta tarea se emplea Kubernetes, para lo cuál Podman tiene comandos que facilitan su despligue con esta herramienta. Sin embargo, existe un proyecto third-party llamado podman-compose, que trata de ser la solución a la sustitución de docker-compose.

Descarga de podman

En primer lugar, procuraremos tener la máquina virtual actualizada:

dnf search update
sudo dnf upgrade

A continuación, ejecutanos:

sudo dnf install podman

Una vez descargado, para más información:

man podman

Construir una imagen a partir de un fichero Dockerfile

Seguimos los mismos pasos que si creáramos una imagen a partir de un fichero con docker. Para ello, podman hace uso de los mismos Dockerfiles, sin hacer modificaciones. Lo podemos comprobar con el Dockerfile de ejemplo de aplicaciones hug usado aquí. Con un editor de textos, como nano (que no viene por defecto instalado en la versión 31 de Fedora).

Para descargar nano:

sudo dnf install nano

Dockerfile:

                                
FROM python:alpine

ENV USERNAME="username"
RUN mkdir /app
RUN pip install hug
COPY endpoint.py /app
WORKDIR /app
CMD hug -f endpoint.py

endpoint.py:

                                
FROM python:alpine

ENV USERNAME="username"
RUN mkdir /app
RUN pip install hug
COPY endpoint.py /app
WORKDIR /app
CMD hug -f endpoint.py

Dentro de la carpeta que contiene estos 2 archivos, para construir la imagen, ejecutamos el siguiente comando:

podman build -t app:v1 -f Dockerfile .

Iniciamos un contenedor a partir de nuestra nueva imagen:

podman run -ti app:v1

Si todo funcionó bien, debería aparecer por pantalla:

/#######################################################################\
          `.----``..-------..``.----.
         :/:::::--:---------:--::::://.
        .+::::----##/-/oo+:-##----:::://
        `//::-------/oosoo-------::://.       ##    ##  ##    ##    #####
          .-:------./++o/o-.------::-`   ```  ##    ##  ##    ##  ##
             `----.-./+o+:..----.     `.:///. ########  ##    ## ##
   ```        `----.-::::::------  `.-:::://. ##    ##  ##    ## ##   ####
  ://::--.``` -:``...-----...` `:--::::::-.`  ##    ##  ##   ##   ##    ##
  :/:::::::::-:-     `````      .:::::-.`     ##    ##    ####     ######
   ``.--:::::::.                .:::.`
         ``..::.                .::         EMBRACE THE APIs OF THE FUTURE
             ::-                .:-
             -::`               ::-                   VERSION 2.6.0
             `::-              -::`
              -::-`           -::-
\########################################################################/

 Copyright (C) 2016 Timothy Edmund Crosley
 Under the MIT License


Serving on :8000...