Ir al contenido principal

LXD: Contenedores Linux II


Continuamos la guía de uso de LXD, que comenzó con la primera parte explicando como instalar el sistema de contenedores LXD en Linux utilizando el gestor de paquetes Snap

-- Este artículo es un extracto de un capitulo de mi libro Servicios de red en Linux, que se encuentra a la venta en Amazon --

... Ahora ya podemos empezar a trabajar con LXD y para ello utilizaremos el comando lxc. El comando lxc va siempre acompañado de un subcomando que indica la acción que queramos utilizar.
Lo primero que vamos a hacer es crear nuestro primer contenedor. Cuando se crea un contenedor hay que especificar la imagen que queremos utilizar para generarlo. Esta imagen la podemos considerar como una plantilla para crear contenedores y contienen una distribución Linux básica. Existen servidores remotos de plantillas para LXD. A continuación vamos a crear un contenedor usando el servidor de imágenes por defecto:

$ lxc launch ubuntu:18.04 micontenedor

El subcomando launch indica a LXD que cree y ejecute un contenedor. A continuación aparece la imagen que vamos a utilizar como plantilla. Si esa imagen se utiliza por primera vez, LXD la descargará del servidor remoto de imágenes y la guardará localmente para su posterior uso.
A la hora de especificar una imagen, se indica el servidor remoto, en este caso ubuntu, y separado por el símbolo dos puntos la imagen dentro de ese servidor. En este caso la versión 18.04 de Ubuntu. También podríamos utilizar el nombre clave de la versión, bionic.
El último parámetro es el nombre que le vamos a dar a nuestro contenedor. Si no se especifica, LXD le asignará uno.
Para ver que contenedores tenemos y sus atributos habrá que utilizar el comando:

$ lxc list

En la Figura 9.2 se puede contemplar la salida de este comando. Podemos ver su estado, RUNNING significa que está ejecutándose o corriendo y su dirección IP, para poder acceder a él desde la red.

Para obtener información detallada sobre un contenedor se puede utilizar el subcomando info:

$ lxc info micontenedor

Las acciones disponibles para actuar sobre el estado de los contenedores son:
  • Crearlo: lxc init remoto:imagen contenedor
  • Ponerlo en marcha: lxc start contenedor
  • Crearlo y ponerlo en marcha: lxc launch remoto:imagen contenedor
  • Pausarlo: lxc pause contenedor
  • Pararlo: lxc stop contenedor
  • Reiniciarlo: lxc restart contenedor
  • Borrarlo: lxc delete contenedor
Una vez que un contenedor está corriendo, podemos utilizar el subcomando exec para ejecutar comandos del sistema operativo interno del contenedor. Por ejemplo,

$ lxc exec micontenedor pwd

Ejecutará el comando pwd dentro del contenedor y nos mostrará su salida por pantalla. Si el comando que queremos ejecutar contiene parámetros, habrá que separar el comando a ejecutar del propio comando lxc; ya que si no, el intérprete de comandos de nuestro sistema operativo anfitrión interpretará que esos parámetros pertenecen al propio lxc y no al comando que queremos ejecutar:

$ lxc exec micontenedor -- ls -l /usr

Si queremos tener una sesión de trabajo dentro del contenedor podemos ejecutar un intérprete de comandos con exec.

$ lxc exec micontenedor bash

Ahora estaremos en la línea de comandos del sistema operativo del contenedor. Para salir, sólo tenemos que teclear exit y volveremos a la línea de comandos de nuestro sistema operativo anfitrión.

Comentarios

Entradas populares de este blog

Instalando Moodle con Docker

En este blog ya hemos hablado en varios artículos sobre la tecnología de contenedores, pero hasta ahora nos habíamos centrado en LXD . En este artículo vamos a explicar cómo podemos instalar Moodle en menos de un minuto (dependiendo de la velocidad de descarga que se tenga, se puede alargar un poco más) usando contenedores. Acerca de Moodle No voy a explicar que es Moodle ni como instalarlo desde cero, para eso existe en Internet multitud de tutoriales. Lo que sí quiero comentar es que para instalar Moodle hace falta un servidor web con PHP . Además requiere que PHP tenga instalado una serie de componentes adicionales. Por otro lado, necesitamos tener instalado en el servidor un sistema de gestión de bases de datos relacional, ya que Moodle almacena la información en él. Normalmente se utiliza MySQL , MariaDB o PostgreSQL . También debemos crear una base de datos específica para Moodle con su respectivo usuario. Durante la instalación Moodle creará las tablas necesari

Analizando el protocolo HTTP

El objetivo de este artículo es el de explicar de forma práctica el funcionamiento del protocolo HTTP y entender el intercambio de datos que se realiza entre los servidores y los clientes web. Por otro lado, cubre la necesidad de tener un texto en español que sirva de referencia a mis alumnos de Servicios en Red  a la hora de realizar la práctica de clase  HTTP-1 . La idea es ver de forma práctica el funcionamiento interno del protocolo HTTP . Para ello, vamos a utilizar un par de herramientas de la línea de comandos de Linux ( telnet y netcat ), con las que vamos a simular el comportamiento tanto del navegador como del servidor web. HTTP es un protocolo de la capa de aplicación, y como muchos otros protocolos de esta capa, está basado en texto. De hecho, los comandos que envía el navegador al servidor y sus respuestas se pueden leer perfectamente en inglés. Por defecto, HTTP utiliza el puerto 80 TCP y HTTPS  el puerto 443 TCP. Los ejemplos que vamos a ilustrar serán

ZFS, Primera parte

Cuando el año pasado instalé LXD y lo configuré por primera vez, me encontré que podía utilizar, de hecho se recomienda, el sistema de ficheros ZFS para albergar los contenedores. Posteriormente, cuando instalé Proxmox en el servidor de mi departamento, me encontré de nuevo con  ZFS . Anteriormente no le había prestado mucha atención a  ZF S , normalmente utilizo EXT4 o XFS , pero estaba claro que había una estrecha relación entre  ZFS  y los sistemas de virtualización. ZFS  es un sistema de ficheros desarrollado por Sun Microsystems  (creadores también del lenguaje de programación Java ), posteriormente la empresa fue adquirida por Oracle , actuales propietarios. OpenZFS  es la variante libre y posee una licencia de tipo  CDDL , que aunque es software libre, es incompatible con GPL . Por este motivo, el kernel de Linux no lo incorpora de serie. Sin embargo, los usuarios pueden instalarlo sin problemas ya que se encuentra en los repositorios de la mayoría de las distribucione