GNU/Linux >> Tutoriales Linux >  >> Linux

Cree su propio contenedor en Linux

Los contenedores se ejecutan en la nube. Esto se debe a que la tecnología de contenedores permite que los sitios web y las aplicaciones web generen copias nuevas de sí mismos a medida que aumenta la demanda. Son la razón por la que cientos de millones de personas pueden usar sitios populares sin que esos sitios se dobleguen bajo la presión del tráfico global. Los contenedores son una tecnología de Linux, lo que significa que dependen del código (específicamente cgroups y espacios de nombres) exclusivos del kernel de Linux, por lo que cuando ejecuta un contenedor, está ejecutando Linux. Usando imágenes de contenedores de sitios como quay.io y dockerhub.io, la mayoría de las personas crean nuevos contenedores específicos para su aplicación o caso de uso. Pero eso hace que algunas personas se pregunten:si mi contenedor proviene de un edificio de desarrolladores sobre el contenedor de otro desarrollador, ¿dónde están esos? vienen los contenedores? No te preocupes, no son tortugas hasta abajo. Puede crear un contenedor desde cero y existe una excelente herramienta de código abierto llamada Buildah para ayudarlo a hacerlo.

Contenedores Linux

  • ¿Qué son los contenedores de Linux?
  • Una introducción a la terminología de contenedores
  • Descargar:Introducción a los contenedores
  • Operadores de Kubernetes:automatización de la plataforma de orquestación de contenedores
  • eBook:Patrones de Kubernetes para diseñar aplicaciones nativas de la nube
  • ¿Qué es Kubernetes?

Especificaciones del contenedor

Los contenedores surgieron de proyectos como los contenedores de Linux (LXC) y Docker, y es la Open Container Initiative (OCI) la que mantiene la especificación formal de lo que es un contenedor. Un contenedor correctamente ensamblado que cumple con la definición de OCI se ejecuta en cualquier motor de contenedor compatible con OCI, como Podman, Docker, CRI-O, etc.

Instalando Buildah

En Fedora y CentOS, es posible que ya tenga instalado Buildah. Si no, puedes instalarlo con tu administrador de paquetes:

$ sudo dnf install buildah

En Debian y sistemas basados ​​en Debian:

$ sudo apt install buildah

Configuración de Buildah 

Debido a que Buildah crea contenedores, la configuración de su entorno es la misma que la configuración de Podman. Ya sea que esté usando Podman o no, configure su sistema para podman "sin raíz" antes de continuar.

Construir un contenedor de la nada

Para construir un contenedor completamente nuevo, utilizando el trabajo previo de nadie como base, usa el nombre especial scratch para decirle a Buildah que desea crear un contenedor vacío. El scratch la designación no es un nombre de imagen. Es su exención de usar una imagen existente para basar su trabajo.

$ buildah from scratch

Este nuevo contenedor, llamado working-container de forma predeterminada, presenta una pequeña cantidad de metadatos y, literalmente, nada más, y ahora se ejecuta en segundo plano en secreto. Puedes verlo con los containers subcomando:

$ buildah containers
CONTAINER ID  BUILDER  ID  IMAGE NAME   CONTAINER NAME
dafc77921c0c     *         scratch      working-container

Para ejecutar el contenedor, primero debe usar unshare subcomando (a menos que esté ejecutando Buildah como root):

$ buildah unshare

Confirme que su contenedor de trabajo no tiene funcionalidad (respuesta de falla esperada en este caso):

$ buildah run working-container sh
ERRO[0000] container_linux.go:349: starting container process caused "exec: \"sh\": executable file not found in $PATH"

Agregar a su contenedor

Para agregar comandos a su contenedor, primero debe montarlo. Las imágenes del contenedor se almacenan en su ~/.local directorio por defecto:

$ buildah mount working-container
~/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/merged

Con el contenedor montado en su ~/.local directorio (o /var/lib/containers/ en el caso de ejecutar como root), puede agregar paquetes usando su administrador de paquetes. El --releasever debe coincidir con la distribución que está ejecutando a medida que crea el contenedor.

[Fedora]$ sudo dnf install --installroot \
~/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/merged \
--releasever 33 \
bash coreutils \
--setopt install_weak_deps=false -y

El método exacto para agregar paquetes depende de su distribución y del administrador de paquetes que utilice. Por ejemplo, en mi escritorio Slackware, uso installpkg :

[Slack]$ installpkg --root ~/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/merged \
/tmp/bash-5.0.17-x86_64-1_SMi.txz

Ahora puede ejecutar el contenedor e intentar algo simple, como iniciar un shell:

$ buildah run working-container bash
# bash --version
GNU bash, version 5.0.17(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Configurando tu contenedor

La buildah config El subcomando le brinda acceso a atributos comunes, como el comando predeterminado que desea que su contenedor ejecute cuando se inicie, establecer variables de entorno, establecer el shell predeterminado, definir el autor, la arquitectura y el nombre de host, y mucho más. Por ejemplo, imagine que ha agregado un paquete que contiene un script de shell llamado motd.sh y desea que se ejecute cuando se inicie el contenedor:

$ buildah config --author "Seth Kenlon" \
--os "Slackware" --shell /bin/bash \
--cmd /usr/bin/motd.sh working-container

Distribuyendo tu contenedor

Cuando haya terminado de construir su contenedor, puede conservarlo como una imagen usando el commit subcomando.

$ buildah commit working-container my_image

Constrúyelo con Buildah

Los contenedores a veces parecen mágicos, pero no son mágicos. Se construyen desde cero y son lo suficientemente flexibles como para que, una vez que existe una imagen, otros puedan usarla para crear nuevos contenedores e imágenes de contenedores que llenan un nicho diferente. No es necesario comenzar desde cero, pero si tiene curiosidad sobre cómo comienzan las imágenes o si desea intentar crear una imagen específica para sus requisitos, Buildah es la herramienta que debe usar.


Linux
  1. Embárcate en una aventura en tu terminal Linux

  2. Prepara tu indicador de Bash para el invierno en Linux

  3. Cómo escribir su propio módulo kernel de Linux con un ejemplo simple

  4. Crear sus propios metapaquetes de Kali Linux

  5. ¿Cuál es el beneficio de compilar su propio kernel de Linux?

Planifique su propio calendario de vacaciones en la línea de comandos de Linux

Cree su propio NAS con OpenMediaVault

Cómo crear tu propia distribución de Linux usando Yocto

Cómo crear su propio servidor VPN IPsec en Linux

Servidor DIY NAS Freenas:construya su propio NAS con Freenas

¿Cómo construir fácilmente su propia distribución de Linux?