Ubuntu LXD tutorial 馃搶| Como instalarlo y usarlo sin misterios

Ubuntu LXD, para ti que quieres exprimir el potencial de tus servidores y piensas en virtualizar. Pero, que tal si te dijera que hay una forma de mezclar la fortaleza de las maquinas virtuales con la densidad de los contenedores?. Hoy te hablare de como instalar y configurar Ubuntu LXD paso a paso usando un pool zfs.

Que es Ubuntu LXD?

Ubuntu LXD es el hipervisor de Canonical para manejar contenedores (compartiendo el mismo hardware del servidor host con equipos virtuales) con la facilidad de uso de las maquinas virtuales

Requerimientos Ubuntu LXD

  • Ubuntu Server (para este articulo estará configurado en la ip fija 192.168.5.101)
  • Partición sin usar del disco para el pool zfs
    • Esquema de particionado usado (solo de ejemplo, tu esquema seguro sera diferente, solo deja suficiente espacio para LXD)
    • /dev/sda1: 512Mb partición EFI
    • /dev/sda2: 20Gb partición /
    • /dev/sda3: swap o memoria virtual de 4Gb
    • /dev/sda4: 674Gb restantes para los containers de LXD
  • Conectividad a internet

Ubuntu LXD tutorial 📌| Como instalarlo y usarlo sin misterios

-Instalamos las dependencias necesarias para usar zfs en nuestro servidor Ubuntu Linux Bionic Beaver LTS

sudo apt install zfsutils zfsutils-linux

-Como crearemos un pool zfs primero tomamos nota del device a usar (recuerda que dejamos una parte del disco particionada pero sin usar para esto). Nos concentraremos en el disk/by-id

ls -la /dev/disk/by-id/
total 0
drwxr-xr-x 2 root root 260 sep 5 20:10 .
drwxr-xr-x 6 root root 120 sep 5 20:10 ..
lrwxrwxrwx 1 root root 9 sep 5 20:10 ata-Hitachi_HTS547575A9E384_J2140059H0N04A -> ../../sda
lrwxrwxrwx 1 root root 10 sep 5 20:10 ata-Hitachi_HTS547575A9E384_J2140059H0N04A-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 sep 5 20:10 ata-Hitachi_HTS547575A9E384_J2140059H0N04A-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 sep 5 20:10 ata-Hitachi_HTS547575A9E384_J2140059H0N04A-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 sep 5 20:10 ata-Hitachi_HTS547575A9E384_J2140059H0N04A-part4 -> ../../sda4
lrwxrwxrwx 1 root root 9 sep 5 20:10 ata-MATSHITADVD-RAM_UJ8C2_HN97_121337 -> ../../sr0
lrwxrwxrwx 1 root root 9 sep 5 20:10 wwn-0x5000cca6e0ce6299 -> ../../sda
lrwxrwxrwx 1 root root 10 sep 5 20:10 wwn-0x5000cca6e0ce6299-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 sep 5 20:10 wwn-0x5000cca6e0ce6299-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 sep 5 20:10 wwn-0x5000cca6e0ce6299-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 sep 5 20:10 wwn-0x5000cca6e0ce6299-part4 -> ../../sda4

-Podrás imaginar el desastre que podemos lograr si nos equivocamos de partición, por lo cual volvemos a verificar que usemos la que debe ser (sda4 – ata-Hitachi_HTS547575A9E384_J2140059H0N04A-part4)

sudo fdisk -l
Disk /dev/loop0: 86,6 MiB, 90759168 bytes, 177264 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sda: 698,7 GiB, 750156374016 bytes, 1465149168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: E7973041-477E-4743-B03B-F9C5C0D2634F

Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 42993663 41943040 20G Linux filesystem
/dev/sda3 42993664 51382271 8388608 4G Linux swap
/dev/sda4 51382272 1465145343 1413763072 674,1G Linux filesystem

-Agregamos nuestro usuario común al grupo lxd. Esto nos permitirá manejar los contenedores sin sudo. Cerramos nuestra sesión y volvemos a logearnos a Ubuntu Server con nuestro usuario

sudo usermod --append --groups lxd drivemeca
exit

Configurando Ubuntu LXD

-La configuracion de LXD es bastante sencilla, casi que dar Enter sobre todos los defaults y solo prestando atención a darle el path de nuestro device de la partición a usar con zfs

sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]: zfs
Name of the storage backend to use (btrfs, dir, lvm, zfs) [default=zfs]:
Create a new ZFS pool? (yes/no) [default=yes]:
Would you like to use an existing block device? (yes/no) [default=no]: yes
Path to the existing block device: /dev/disk/by-id/ata-Hitachi_HTS547575A9E384_J2140059H0N04A-part4
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:

-Verificamos. Como aun no tenemos ningún contenedor, es normal que no aparezca nada en el listado

lxc list
If this is your first time running LXD on this machine, you should also run: lxd init
To start your first container, try: lxc launch ubuntu:16.04

+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+

Como crear contenedores con Ubuntu LXD

-La magia de los contenedores. Con solo un comando descargaremos la imagen que necesitemos. En este caso descargamos una imagen de Ubuntu Server 18.04 y la nombramos webserver. Puede demorar un poco, tiempo de ir por un café

lxc launch ubuntu:18.04 webserver
Creating webserver
Starting webserver

-Verificamos el listado de nuestros contenedores. Ya tenemos el contenedor llamado webserver ejecutándose

lxc list
+-----------+---------+---------------------+-----------------------------------------------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+-----------+---------+---------------------+-----------------------------------------------+------------+-----------+
| webserver | RUNNING | 10.122.98.84 (eth0) | fd42:ad02:3190:fc54:216:3eff:fe3c:1c1a (eth0) | PERSISTENT | 0 |
+-----------+---------+---------------------+-----------------------------------------------+------------+-----------+

Como listar imágenes Ubuntu LXD

-Para listar imágenes disponibles para descarga (prepárate para un listado largoooo) ejecutamos el siguiente comando. Es buena idea filtrarlo con less para poder verlo poco a poco. Como podras ver, hay imágenes de todo tipo y versión

lxc image list images: | less

+-------------------------------+--------------+--------+-------------------------------+---------+----------+-------------------------------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCH | SIZE | UPLOAD DATE |
+-------------------------------+--------------+--------+--------------------------------+---------+----------+-------------------------------+
| alpine/3.4 (3 more) | cc8b58012122 | yes | Alpine 3.4 amd64 (20180627_17:50) | x86_64 | 2.04MB | Jun 27, 2018 at 12:00am (UTC) |
+-------------------------------+--------------+--------+--------------------------------+---------+----------+-------------------------------+
| alpine/3.4/armhf (1 more) | 7813a1299900 | yes | Alpine 3.4 armhf (20180627_17:50) | armv7l | 1.63MB | Jun 27, 2018 at 12:00am (UTC) |
+-------------------------------+--------------+--------+--------------------------------+---------+----------+-------------------------------+
| alpine/3.4/i386 (1 more) | 612c3ece0803 | yes | Alpine 3.4 i386 (20180627_17:50) | i686 | 1.88MB | Jun 27, 2018 at 12:00am (UTC) |
+-------------------------------+--------------+--------+--------------------------------+---------+----------+-------------------------------+
| alpine/3.5 (3 more) | 59bb071a62f4 | yes | Alpine 3.5 amd64 (20180905_13:00) | x86_64 | 3.05MB | Sep 5, 2018 at 12:00am (UTC) |
+-------------------------------+--------------+--------+--------------------------------+---------+----------+-------------------------------+
| alpine/3.5/arm64 (1 more) | 8a549aaa9701 | yes | Alpine 3.5 arm64 (20180905_19:03) | aarch64 | 2.96MB | Sep 5, 2018 at 12:00am (UTC) |
+-------------------------------+--------------+--------+--------------------------------+---------+----------+-------------------------------+
| alpine/3.5/armhf (1 more) | 86a804364e94 | yes | Alpine 3.5 armhf (20180905_13:01) | armv7l | 2.99MB | Sep 5, 2018 at 12:00am (UTC) |
+-------------------------------+--------------+--------+------------------------------+---------+----------+-------------------------------+

Usando un contenedor Ubuntu LXD

-Ingresamos al contenedor webserver como root. Seguidamente verificamos actualizaciones, las descargamos e instalamos

lxc exec webserver -- /bin/bash
root@webserver:~# sudo apt update
Hit:1 http://archive.ubuntu.com/ubuntu bionic InRelease
Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB] Get:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB] Get:4 http://security.ubuntu.com/ubuntu bionic-security/multiverse Sources [1336 B] Get:5 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB] Get:6 http://security.ubuntu.com/ubuntu bionic-security/universe Sources [15.7 kB] Get:7 http://archive.ubuntu.com/ubuntu bionic/universe Sources [9051 kB] Get:8 http://security.ubuntu.com/ubuntu bionic-security/main Sources [46.5 kB] Get:9 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages [160 kB] Get:10 http://security.ubuntu.com/ubuntu bionic-security/main Translation-en [61.5 kB] Get:11 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages [57.0 kB] Get:12 http://security.ubuntu.com/ubuntu bionic-security/universe Translation-en [33.6 kB] Get:13 http://security.ubuntu.com/ubuntu bionic-security/multiverse amd64 Packages [1444 B] Get:14 http://security.ubuntu.com/ubuntu bionic-security/multiverse Translation-en [996 B] Get:15 http://archive.ubuntu.com/ubuntu bionic/main Sources [829 kB] Get:16 http://archive.ubuntu.com/ubuntu bionic/restricted Sources [5324 B] Get:17 http://archive.ubuntu.com/ubuntu bionic/multiverse Sources [181 kB] Get:18 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages [8570 kB] Get:19 http://archive.ubuntu.com/ubuntu bionic/universe Translation-en [4941 kB] Get:20 http://archive.ubuntu.com/ubuntu bionic/multiverse amd64 Packages [151 kB] Get:21 http://archive.ubuntu.com/ubuntu bionic/multiverse Translation-en [108 kB] Get:22 http://archive.ubuntu.com/ubuntu bionic-updates/universe Sources [58.5 kB] Get:23 http://archive.ubuntu.com/ubuntu bionic-updates/multiverse Sources [2672 B] Get:24 http://archive.ubuntu.com/ubuntu bionic-updates/main Sources [161 kB] Get:25 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [308 kB] Get:26 http://archive.ubuntu.com/ubuntu bionic-updates/main Translation-en [116 kB] Get:27 http://archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [173 kB] Get:28 http://archive.ubuntu.com/ubuntu bionic-updates/universe Translation-en [80.5 kB] Get:29 http://archive.ubuntu.com/ubuntu bionic-updates/multiverse amd64 Packages [3772 B] Get:30 http://archive.ubuntu.com/ubuntu bionic-updates/multiverse Translation-en [2376 B] Get:31 http://archive.ubuntu.com/ubuntu bionic-backports/universe Sources [1184 B] Get:32 http://archive.ubuntu.com/ubuntu bionic-backports/universe amd64 Packages [2704 B] Get:33 http://archive.ubuntu.com/ubuntu bionic-backports/universe Translation-en [1136 B] Fetched 25.4 MB in 27s (946 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
3 packages can be upgraded. Run 'apt list --upgradable' to see them.
root@webserver:~# sudo apt dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
libfreetype6
Use 'sudo apt autoremove' to remove it.
The following packages will be upgraded:
console-setup console-setup-linux keyboard-configuration
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 1459 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 console-setup-linux all 1.178ubuntu2.7 [982 kB] Get:2 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 console-setup all 1.178ubuntu2.7 [105 kB] Get:3 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 keyboard-configuration all 1.178ubuntu2.7 [372 kB] Fetched 1459 kB in 3s (530 kB/s)
Preconfiguring packages ...
(Reading database ... 28491 files and directories currently installed.)
Preparing to unpack .../console-setup-linux_1.178ubuntu2.7_all.deb ...
Unpacking console-setup-linux (1.178ubuntu2.7) over (1.178ubuntu2.6) ...
Preparing to unpack .../console-setup_1.178ubuntu2.7_all.deb ...
Unpacking console-setup (1.178ubuntu2.7) over (1.178ubuntu2.6) ...
Preparing to unpack .../keyboard-configuration_1.178ubuntu2.7_all.deb ...
Unpacking keyboard-configuration (1.178ubuntu2.7) over (1.178ubuntu2.6) ...
Setting up keyboard-configuration (1.178ubuntu2.7) ...
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console
update-initramfs: deferring update (trigger activated)
Processing triggers for ureadahead (0.100.0-20) ...
Processing triggers for systemd (237-3ubuntu10.3) ...
Processing triggers for man-db (2.8.3-2) ...
Setting up console-setup-linux (1.178ubuntu2.7) ...
Setting up console-setup (1.178ubuntu2.7) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools (0.130ubuntu3.1) ...

-Instalamos nginx. Automáticamente sera ejecutado el servicio y nos salimos del contenedor

sudo apt install nginx
exit

-En nuestro servidor Ubuntu de virtualizacion probamos a conectarnos al nginx del contenedor webserver por medio del comando curl a la ip asignada por LXD. Debe respondernos con su pagina de bienvenida

curl http://10.122.98.84
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Ubuntu LXD iptables

Para usar tus contenedores fuera del servidor Ubuntu debes aplicar reglas de iptables, ya sea para publicarlos en internet o para tu LAN. Debes tener en consideración los siguientes puntos

  • IP de tu servidor Ubuntu Linux
  • Tarjeta de red del servidor Ubuntu Linux
  • IP del contenedor
  • Puerto del contenedor que quieres hacer visible

-Ejecutamos el siguiente comando. Haremos un NAT y direccionaremos el trafico del puerto 80 entrante por nuestra tarjeta de red enp4s0 en Ubuntu Server al puerto 80 del contenedor. Como buena política, agregamos también un comentario de que hace esa regla en nuestro servidor

sudo iptables -t nat -I PREROUTING -i enp4s0 -p TCP -d 192.168.5.101 --dport 80 -j DNAT --to-destination 10.122.98.84:80 -m comment --comment "conexión puerto 80 container ubuntu webserver"

-Listamos las reglas de PREROUTING y ya podemos ver nuestra recién creada regla con su comentario (ubuser es el hostname del servidor ubuntu linux)

sudo iptables -t nat -L PREROUTING
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere ubuser tcp dpt:http /* conexion puerto 80 container ubuntu webserver */ to:10.122.98.84:80

-Instalamos en nuestro ubuntu local para probar que ya sea visible el servidor nginx del contenedor webserver

sudo apt install curl

-Hacemos una conexión en modo verbose al puerto 80 del servidor ubuntu, lo que nos mostrara en pantalla mas info que nos puede servir para certificar que todo esta ok

curl --verbose 'http://192.168.5.101'
* Rebuilt URL to: http://192.168.5.101/
* Trying 192.168.5.101...
* TCP_NODELAY set
* Connected to 192.168.5.101 (192.168.5.101) port 80 (#0)
> GET / HTTP/1.1
> Host: 192.168.5.101
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/1.14.0 (Ubuntu)
< Date: Wed, 05 Sep 2018 22:33:11 GMT
< Content-Type: text/html
< Content-Length: 612
< Last-Modified: Wed, 05 Sep 2018 21:43:46 GMT
< Connection: keep-alive
< ETag: "5b904e12-264"
< Accept-Ranges: bytes
<
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
* Connection #0 to host 192.168.5.101 left intact

-Guardamos las reglas iptables en nuestro servidor ubuntu linux. Para eso instalamos el paquete iptables-persistent que nos permitirá guardar reglas y que se ejecuten automáticamente al hacer boot en nuestro ubuntu LTS

sudo apt install iptables-persistent
[sudo] password for drivemeca:
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes adicionales:
netfilter-persistent
Se instalarán los siguientes paquetes NUEVOS:
iptables-persistent netfilter-persistent
0 actualizados, 2 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 13,2 kB de archivos.
Se utilizarán 79,9 kB de espacio de disco adicional después de esta operación.
¿Desea continuar? [S/n] Des:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 netfilter-persistent all 1.0.4+nmu2 [6.680 B] Des:2 http://archive.ubuntu.com/ubuntu bionic/universe amd64 iptables-persistent all 1.0.4+nmu2 [6.526 B] Descargados 13,2 kB en 5s (2.631 B/s)
debconf: no se pudo inicializar la interfaz: Dialog
debconf: (Necesita una pantalla de al menos 13 líneas de alto y 31 columnas de ancho para la interfaz «dialog».)
debconf: probando ahora la interfaz: Readline
Preconfigurando paquetes ...
Configuración de iptables-persistent
------------------------------------

Las reglas actuales de iptables se pueden guardar en el archivo de configuración «/etc/iptables/rules.v4». Estas reglas se cargarán automáticamente durante el inicio
del sistema.

Las reglas sólo se guardan automáticamente durante la instalación del paquete. Puede consultar las instrucciones para mantener el archivo de reglas actualizado en la
página de manual de «iptables-save(8)».

¿Desea guardar las reglas de IPv4 actuales? [sí/no] si

Las reglas actuales de iptables se pueden guardar en el archivo de configuración «/etc/iptables/rules.v6». Estas reglas se cargarán automáticamente durante el inicio
del sistema.

Las reglas sólo se guardan automáticamente durante la instalación del paquete. Puede consultar las instrucciones para mantener el archivo de reglas actualizado en la
página de manual de «ip6tables-save(8)».

¿Desea guardar las reglas de IPv6 actuales? [sí/no] si

Seleccionando el paquete netfilter-persistent previamente no seleccionado.
(Leyendo la base de datos ... 102434 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../netfilter-persistent_1.0.4+nmu2_all.deb ...
Desempaquetando netfilter-persistent (1.0.4+nmu2) ...
Seleccionando el paquete iptables-persistent previamente no seleccionado.
Preparando para desempaquetar .../iptables-persistent_1.0.4+nmu2_all.deb ...
Desempaquetando iptables-persistent (1.0.4+nmu2) ...
Procesando disparadores para ureadahead (0.100.0-20) ...
ureadahead will be reprofiled on next reboot
Configurando netfilter-persistent (1.0.4+nmu2) ...
Created symlink /etc/systemd/system/multi-user.target.wants/netfilter-persistent.service → /lib/systemd/system/netfilter-persistent.service.
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
Procesando disparadores para systemd (237-3ubuntu10.3) ...
Procesando disparadores para man-db (2.8.3-2) ...
Configurando iptables-persistent (1.0.4+nmu2) ...
Procesando disparadores para ureadahead (0.100.0-20) ...

Como usar lxc en Ubuntu LXD

-La información mas completa y siempre actualizada la encontraras en la ayuda del comando (o ejecutando man lxc)

lxc help
Description:
Command line client for LXD

All of LXD's features can be driven through the various commands below.
For help with any of those, simply call them with --help.

Usage:
lxc [command]

Available Commands:
alias Manage command aliases
cluster Manage cluster members
config Manage container and server configuration options
console Attach to container consoles
copy Copy containers within or in between LXD instances
delete Delete containers and snapshots
exec Execute commands in containers
file Manage files in containers
help Help about any command
image Manage images
info Show container or server information
launch Create and start containers from images
list List containers
move Move containers within or in between LXD instances
network Manage and attach containers to networks
operation List, show and delete background operations
profile Manage profiles
publish Publish containers as images
remote Manage the list of remote servers
rename Rename containers and snapshots
restart Restart containers
restore Restore containers from snapshots
snapshot Create container snapshots
start Start containers
stop Stop containers
storage Manage storage pools and volumes
version Show local and remote versions

Flags:
--all Show less common commands
--debug Show all debug messages
--force-local Force using the local unix socket
-h, --help Print help
-v, --verbose Show all information messages
--version Print version number

LXD es un gran paso para tener un hipervisor poderoso en nuestro servidor Ubuntu LTS. Con Ubuntu LXD de forma sencilla tendrás el poder de los contenedores usando el mismo hardware (lo que te permitirá ejecutar muchos mas) y con la facilidad de uso de una maquina virtual común. Nada complejo instalar y configurar cierto, ya lo usas o estas pensando hacerlo? Cuéntame aquí debajo en los comentarios que te ha parecido.

Satisfech@ con el articulo, hazme una donación, no importa la cantidad, la intención es lo que vale, dale click a este botón

Comparte este articulo opensource en tus redes sociales (compartir es sexy) por medio de los botones de redes sociales para que otros lo conozcan y apoyes mi blog.

Ademas, no olvides escribirme en los comentarios aquí debajo y pasa la voz compartiendo el tweet.