Cómo instalar Podman desde el código fuente en Ubuntu

Podman es un tiempo de ejecución de contenedores que proporciona características similares a Docker. Forma parte de la biblioteca libpod y puede utilizarse para gestionar pods (terminología de Kubernetes), contenedores, imágenes de contenedores y volúmenes de contenedores. Podman es muy diferente a Docker, que utiliza la arquitectura cliente-servidor y requiere un demonio Docker para ejecutarse, mientras que Podman no requiere ningún demonio para ejecutarse y además puede ejecutarse perfectamente sin privilegios de root.

En este tutorial, vamos a mostrarte cómo instalar Podman manualmente desde el código fuente en un servidor Ubuntu. Instalaremos todas las dependencias necesarias para la instalación de Podman, incluyendo los plugins conmon (monitorización de contenedores), CNI (Container Network Interface) y Runc, el tiempo de ejecución compatible con OCI.

Requisitos previos

  • Servidor Ubuntu 18.04
  • Privilegios de root

Qué vamos a hacer

  1. Instalar las dependencias
  2. Descargar las configuraciones adicionales
  3. Instalar Conmon (Monitorización de Contenedores)
  4. Instalar los plugins CNI (Container Network Interface)
  5. Instalar Runc OCI Container Runtime
  6. Instalar Podman

Paso 1 – Instalar las dependencias

En primer lugar, necesitamos instalar go y algunas dependencias de paquetes para construir Podman y otros paquetes desde el código fuente.

Antes de seguir adelante, asegúrate de actualizar los repositorios de ubuntu y actualizar el sistema.

sudo apt update
sudo apt upgrade

Ahora instala go y todas las dependencias de los paquetes utilizando el siguiente comando apt.

sudo apt install -y btrfs-tools git golang-go go-md2man iptables libassuan-dev libdevmapper-dev libglib2.0-dev libc6-dev libgpgme-dev libgpg-error-dev libprotobuf-dev libprotobuf-c-dev libostree-dev libseccomp-dev libselinux1-dev pkg-config

Espera a que se instalen todos los paquetes.

Paso 2 – Descarga de la configuración adicional

Después de instalar las dependencias de los paquetes Podman, necesitamos crear el directorio de contenedores ‘/etc/containers’ y descargar alguna configuración en él.

Ejecuta el siguiente comando para crear el directorio de contenedores ‘/etc/containers’.

sudo mkdir -p /etc/containers

Después, descarga en él los registros de los contenedores y la configuración de las políticas mediante los siguientes comandos curl.

sudo curl https://raw.githubusercontent.com/projectatomic/registries/master/registries.fedora -o /etc/containers/registries.conf
sudo curl https://raw.githubusercontent.com/containers/skopeo/master/default-policy.json -o /etc/containers/policy.json

Más detalles sobre cada configuración.

registries.conf – Se puede utilizar para definir el registro de imágenes de contenedores. Y por defecto, Podman recuperará y descargará imágenes de contenedores basándose en ese archivo y desde registros de imágenes como docker.io, registry.fedoraproject.org y registry.access.redhat.com.

policy.json – Forma parte del proyecto «skopeo» que puede utilizarse para diversas operaciones sobre imágenes de contenedores y repositorios de imágenes.

Paso 3 – Instalar Conmon Container Monitoring

Conmon o Monitorización de Contenedores es la parte del proyecto CRI-O que se puede utilizar para monitorizar los contenedores, gestionar el registro del proceso de contenedores, servir y adjuntar clientes y detectar situaciones de Out Of Memory (OOM). Podman utiliza el conmon para monitorizar los contenedores, cada contenedor tiene la monitorización de contenedores conmon.

En este paso, vamos a construir e instalar el conmon desde el código fuente de CRI-O. Pero en primer lugar, necesitamos crear y definir el directorio del proyecto de la ruta go.

Por defecto, go 1.8+ utilizará el directorio ‘~/go’ como directorio de proyecto ‘$GOPATH’. Por tanto, créalo utilizando el siguiente comando.

export GOPATH=~/go
mkdir -p $GOPATH

Después, descarga el código fuente de CRI-O en el directorio del proyecto ‘$GOPATH’.

git clone https://github.com/kubernetes-sigs/cri-o $GOPATH/src/github.com/kubernetes-sigs/cri-o

Entra en el directorio del proyecto CRI-O.

cd $GOPATH/src/github.com/kubernetes-sigs/cri-o

Ahora construye e instala la utilidad conmon utilizando los siguientes comandos.

mkdir bin
make bin/conmon
sudo install -D -m 755 bin/conmon /usr/libexec/podman/conmon

Como resultado, la utilidad conmon se instalará en el directorio ‘/usr/libexec/podman’. Compruébalo utilizando el siguiente comando.

/usr/libexec/podman/conmon --help

Y se te mostrará el resultado como se indica a continuación.

Paso 4 – Instalar los plugins CNI (Container Network Interface)

En este paso, vamos a instalar manualmente desde el código fuente los plugins de red estándar para contenedores Linux CNI (Container Network Interface).

Descarga el código fuente de los plugins CNI en el directorio del proyecto ‘$GOPATH’ y entra en él.

git clone https://github.com/containernetworking/plugins.git $GOPATH/src/github.com/containernetworking/plugins
cd $GOPATH/src/github.com/containernetworking/plugins

Después, construye los plugins CNI especialmente para el sistema Linux utilizando el script de construcción.

./build_linux.sh

Una vez completado, crea un nuevo directorio ‘/usr/libexec/cni’ y mueve todos los plugins binarios CNI a ese directorio.

sudo mkdir -p /usr/libexec/cni
sudo cp bin/* /usr/libexec/cni

A continuación, tenemos que crear el directorio de configuración CNI y descargar el ejemplo de configuración CNI para Podman.

Crea un nuevo directorio ‘/etc/cni/net.d’ y descarga en él la configuración CNI utilizando los siguientes comandos.

mkdir -p /etc/cni/net.d
curl -qsSL https://raw.githubusercontent.com/containers/libpod/master/cni/87-podman-bridge.conflist | tee /etc/cni/net.d/99-loopback.conf

Y como resultado, la instalación de los plugins CNI se ha completado.

Puedes comprobar todos los plugins disponibles en el directorio ‘/usr/libexec/cni’.

ls -lah /usr/libexec/cni

Paso 5 – Instalar el tiempo de ejecución del contenedor OCI Runc

Runc es el tiempo de ejecución de contenedores OCI que se puede utilizar para generar y ejecutar contenedores, y Podman se utiliza para lanzar contenedores.

En este paso, instalaremos el tiempo de ejecución de Runc OCI desde el código fuente. Por lo tanto, necesitamos descargar los códigos fuente de Runc al directorio del proyecto ‘$GOPATH’.

Descarga el código fuente de Runc al directorio del proyecto ‘$GOPATH’ y entra en él.

git clone https://github.com/opencontainers/runc.git $GOPATH/src/github.com/opencontainers/runc
cd $GOPATH/src/github.com/opencontainers/runc

Ahora construye e instala el tiempo de ejecución Runc OCI utilizando el siguiente comando.

make BUILDTAGS="seccomp"
sudo cp runc /usr/bin/runc

Una vez completada la instalación, comprueba el tiempo de ejecución del contenedor Runc OCI utilizando el siguiente comando.

runc --help

Y se te mostrará el resultado como se indica a continuación.

Paso 6 – Instalar Podman

Descarga el código fuente de Podman en el directorio del proyecto ‘$GOPATH’ y entra en él.

git clone https://github.com/containers/libpod/ $GOPATH/src/github.com/containers/libpod
cd $GOPATH/src/github.com/containers/libpod

Ahora construye e instala Podman ejecutando el siguiente comando.

make
sudo make install PREFIX=/usr

Una vez completada la instalación, ejecuta los siguientes comandos de Podman.

podman version
podman info

Y se te mostrará la versión de Podman y el entorno de instalación.

Probando para sacar la imagen del contenedor.

podman search alpine

podman pull alpine
podman images

Probando para ejecutar un contenedor.

podman run --net host --rm -ti alpine echo 'Hello Podman'

Con estos resultados, la instalación y configuración de Podman en Ubuntu 18.04 se ha completado con éxito.

Usar Podman

Un tutorial detallado sobre cómo utilizar Podman para crear imágenes, volúmenes y contenedores está disponible aquí: Introducción a Podman: Gestionar imágenes, contenedores y volúmenes

Referencia

También te podría gustar...