Saltar a contenido

02.-Creación y gestión de contenedores

Al crear un contenedor se bajará el sistema de archivos que formará parte de él. La primera vez que bajamos con debootstrap una versión de un sistema operativo se descargará un sistema de archivo mínimo del sistema (que llamamos plantilla) que servirá para crear todos los contenedores que creemos de la misma versión del sistema.

La creación de un contenedor con la última versión de debian, se realiza con la instrucción (ejecutada como root):

$ lxc-create -n contenedor1 -t debian -- -r bullseye
  • -n: Nombre del contenedor.
  • -t: Nombre de la plantilla.
  • -r: Es una opción de la plantilla. Es el nombre de la versión del sistema operativo. Para ver más opciones de una plantilla ejecutamos: lxc-create -t debian -h.

Podemos comprobar que se ha creado un contenedor, ejecutando:

$ lxc-ls
contenedor1 

La plantilla que hemos descargado se guarda en /var/cache/lxc/debian/rootfs-bullseye-amd64/. Esta copia del sistema de archivo se utilizará cuando creemos otro contenedor con el mismo sistema operativo. El sistema de archivo del contenedor1 se guarda en /var/lib/lxc/contenedor1/rootfs/.

Ahora podemos iniciar la ejecución del contenedor, comprobar que está funcionando y acceder a él:

$ lxc-start contenedor1
$ lxc-ls -f
NAME        STATE   AUTOSTART GROUPS IPV4       IPV6 UNPRIVILEGED 
contenedor1 RUNNING 0         -      10.0.3.180 -    false        
$ lxc-attach contenedor1
root@contenedor1:~# 

Iniciamos el contenedor con lxc-start, comprobamos los contenedores que tenemos creados con lxc-ls con la opción -f nos da más información (vemos que está ejecutándose, que no se ejecuta al inicio, que ha tomado una dirección ip y que es privilegiado). Por último nos hemos conectado al contenedor con lxc-attach.

Podemos parar el contenedor con lxc-stop y eliminar el contenedor con lxc-destroy.

Para visualizar todas las plantillas que podemos descargar, ejecutamos:

$ ls /usr/share/lxc/templates/
lxc-alpine    lxc-archlinux  lxc-centos  lxc-debian    lxc-fedora     lxc-gentoo  lxc-oci       lxc-opensuse  lxc-plamo  lxc-sabayon    lxc-sparclinux  lxc-ubuntu    lxc-voidlinux
lxc-altlinux  lxc-busybox    lxc-cirros  lxc-download  lxc-fedora-legacy  lxc-local   lxc-openmandriva  lxc-oracle    lxc-pld    lxc-slackware  lxc-sshd    lxc-ubuntu-cloud

También puedes obtener la lista de plantillas en la página Image server for LXC and LXD.

Ejecución de comandos en un contenedor

Podemos ejecutar un comando en un contenedor que se esté ejecutando de la siguiente manera:

$ lxc-attach contenedor1 -- ls -al

si el contenedor está apagado, lo haríamos de la siguiente forma:

$ lxc-stop contenedor1
$ lxc-execute contenedor1 -- ls -al

Eliminar un contenedor

Para eliminar un contenedor podemos ejecutar la siguiente instrucción con el contenedor parado:

$ lxc-destroy contendor1

Si el contenedor está inicado podemos usar el parámetro -f de la instracción lxc-destroy para eliminarlo.