Instalar los paquetes necesarios
pablo@host:~# sudo sudo apt install zfsutils-linux lxd
pablo@host:~$ 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]:
Name of the storage backend to use (dir, 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]:
Size in GB of the new loop device (1GB minimum) [default=84GB]:
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]: none
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]:
pablo@host:~$
Listar las imágenes disponibles para crear un contenedor
pablo@host:~$ sudo lxc image list images:ubuntu arch=amd64
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPCIÓN | ARQ | TAMAÑO |
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
| ubuntu/14.04 (7 más) | 7f146839082a | sí | Ubuntu trusty amd64 (20200426_07:42) | x86_64 | 75.45MB |
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
| ubuntu/16.04 (7 más) | 219cff31b8f5 | sí | Ubuntu xenial amd64 (20200426_07:42) | x86_64 | 80.77MB |
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
| ubuntu/16.04/cloud (3 más) | 805b76000857 | sí | Ubuntu xenial amd64 (20200426_07:42) | x86_64 | 99.91MB |
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
| ubuntu/18.04 (7 más) | acf444ccf6f6 | sí | Ubuntu bionic amd64 (20200426_08:52) | x86_64 | 94.46MB |
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
| ubuntu/18.04/cloud (3 más) | 3d7b52c8c572 | sí | Ubuntu bionic amd64 (20200426_07:42) | x86_64 | 105.25MB |
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
| ubuntu/eoan (7 más) | c347967a70de | sí | Ubuntu eoan amd64 (20200426_07:42) | x86_64 | 95.19MB |
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
| ubuntu/eoan/cloud (3 más) | 8e3ea1480cb2 | sí | Ubuntu eoan amd64 (20200426_07:42) | x86_64 | 108.35MB |
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
| ubuntu/focal (7 más) | 751bac27ad88 | sí | Ubuntu focal amd64 (20200426_07:42) | x86_64 | 97.28MB |
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
| ubuntu/focal/cloud (3 más) | 96a2da7d8f24 | sí | Ubuntu focal amd64 (20200426_07:42) | x86_64 | 111.91MB |
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
Crear un contenedor Ubuntu 18.04
pablo@host:~# sudo lxc launch ubuntu:18.04 ubuntu-lxc1
Creando ubuntu-lxc1
Iniciando ubuntu-lxc1
Listar contenedores creados
pablo@host:~# sudo lxc list
+-------------+---------+---------------------+------+------------+-----------+
| NOMBRE | ESTADO | IPV4 | IPV6 | TIPO | SNAPSHOTS |
+-------------+---------+---------------------+------+------------+-----------+
| ubuntu-lxc1 | RUNNING | 10.188.82.11 (eth0) | | PERSISTENT | 0 |
+-------------+---------+---------------------+------+------------+-----------+
Transferir archivos del host al contenedor ubuntu-lxc1
pablo@host:~$ sudo lxc file push /home/pablo/.ssh/ ubuntu-lxc1/tmp/ --recursive --verbose
INFO[04-26|22:23:01] Pushing /home/pablo/.ssh to /tmp/.ssh (directory)
INFO[04-26|22:23:01] Pushing /home/pablo/.ssh/authorized_keys to /tmp/.ssh/authorized_keys (file)
INFO[04-26|22:23:01] Pushing /home/pablo/.ssh/id_rsa.pub to /tmp/.ssh/id_rsa.pub (file)
INFO[04-26|22:23:01] Pushing /home/pablo/.ssh/known_hosts to /tmp/.ssh/known_hosts (file)
pablo@host:~$
Transferir archivos del contenedor ubuntu-lxc1 al host
pablo@host:~$ sudo lxc file pull ubuntu-lxc1/home/ubuntu/.ssh/authorized_keys /tmp/ --verbose
INFO[04-26|22:27:46] Pulling /tmp/authorized_keys from home/ubuntu/.ssh/authorized_keys (file)
pablo@host:~$
ACCEDER AL CONTENEDOR ubuntu-lxc1 Y CAMBIAR LA CONTRASEÑA
pablo@host:~$ sudo lxc shell ubuntu-lxc1
mesg: ttyname failed: No such device
root@ubuntu-lxc1:~# passwd ubuntu
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@ubuntu-lxc1:~#
DETENER EL CONTENEDOR ubuntu-lxc1 Y VERIFICAR SU ESTADO
pablo@host:~$ sudo lxc stop ubuntu-lxc1
pablo@host:~$ sudo lxc list
+-------------+---------+------+------+------------+-----------+
| NOMBRE | ESTADO | IPV4 | IPV6 | TIPO | SNAPSHOTS |
+-------------+---------+------+------+------------+-----------+
| ubuntu-lxc1 | STOPPED | | | PERSISTENT | 0 |
+-------------+---------+------+------+------------+-----------+
pablo@host:~$
Iniciar el contenedor ubuntu-lxc1 y verificar su estado
pablo@host:~$ sudo lxc start ubuntu-lxc1
pablo@host:~$ sudo lxc list
+-------------+---------+---------------------+------+------------+-----------+
| NOMBRE | ESTADO | IPV4 | IPV6 | TIPO | SNAPSHOTS |
+-------------+---------+---------------------+------+------------+-----------+
| ubuntu-lxc1 | RUNNING | 10.188.82.11 (eth0) | | PERSISTENT | 0 |
+-------------+---------+---------------------+------+------------+-----------+
pablo@host:~$
Crear un snapshot del contenedor ubuntu-lxc1 y verificar su estado
pablo@host:~$ sudo lxc snapshot ubuntu-lxc1 usnap0
pablo@host:~$ sudo lxc list
+-------------+---------+---------------------+------+------------+-----------+
| NOMBRE | ESTADO | IPV4 | IPV6 | TIPO | SNAPSHOTS |
+-------------+---------+---------------------+------+------------+-----------+
| ubuntu-lxc1 | RUNNING | 10.188.82.11 (eth0) | | PERSISTENT | 1 |
+-------------+---------+---------------------+------+------------+-----------+
pablo@host:~$
Verficar la informacion del contenedor ubuntu-lxc1
pablo@host:~$ sudo lxc info ubuntu-lxc1
Nombre: ubuntu-lxc1
Remote: unix://
Arquitectura: x86_64
Creación: 2020/04/26 23:35 UTC
Estado: Running
Type: persistent
Perfiles: default
PID: 16481
Ips:
eth0: inet 10.188.82.11 veth7QXKDQ
eth0: inet6 fe80::216:3eff:fe81:e698 veth7QXKDQ
lo: inet 127.0.0.1
lo: inet6 ::1
Resources:
Procesos: 41
Uso de CPU:
Uso de CPU (en segundos): 8
Memory usage:
Memory (current): 100.23MB
Memory (peak): 113.44MB
Network usage:
eth0:
Bytes recibidos: 85.50kB
Bytes enviados: 42.51kB
Packets received: 534
Packets sent: 346
lo:
Bytes recibidos: 4.47kB
Bytes enviados: 4.47kB
Packets received: 43
Packets sent: 43
Snapshots:
usnap0 (taken at 2020/04/27 01:33 UTC) (stateless)
pablo@host:~$
Revertir al snapshot usnap0 del contenedor ubuntu-lxc1
pablo@host:~$ sudo lxc restore ubuntu-lxc1 usnap0
Publicar y listar una imagen a partir del snapshot usnap0
pablo@host:~$ sudo sudo lxc publish ubuntu-lxc1/usnap0 --alias ubuntuImage4snap0
pablo@host:~$ sudo lxc image list
+--------------------+--------------+--------+------------------------------------+--------+----------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPCIÓN | ARQ | TAMAÑO |
+--------------------+--------------+--------+------------------------------------+--------+----------+
| ubuntuImage4snap0 | 067b55c92737 | no | Ubuntu 18.04 LTS server (20200407) | x86_64 | 271.56MB |
+--------------------+--------------+--------+------------------------------------+--------+----------+
pablo@host:~$
Crear un nuevo contenedor ubuntu4image a partir de la imagen ubuntuImage4snap0
pablo@host:~$ sudo lxc launch 067b55c92737 ubuntu4image
Creando ubuntu4image
Iniciando ubuntu4image
pablo@host:~$ sudo lxc list
+---------------+---------+----------------------+------+------------+-----------+
| NOMBRE | ESTADO | IPV4 | IPV6 | TIPO | SNAPSHOTS |
+---------------+---------+----------------------+------+------------+-----------+
| ubuntu4image | RUNNING | 10.188.82.227 (eth0) | | PERSISTENT | 0 |
+---------------+---------+----------------------+------+------------+-----------+
| ubuntu-lxc1 | RUNNING | 10.188.82.151 (eth0) | | PERSISTENT | 0 |
+---------------+---------+----------------------+------+------------+-----------+
pablo@host:~$
Eliminar un snapshot del contenedor ubuntu-lxc1 y verificar su estado
pablo@host:~$ sudo lxc delete ubuntu-lxc1/usnap0
pablo@host:~$ sudo lxc list
+-------------+---------+---------------------+------+------------+-----------+
| NOMBRE | ESTADO | IPV4 | IPV6 | TIPO | SNAPSHOTS |
+-------------+---------+---------------------+------+------------+-----------+
| ubuntu-lxc1 | RUNNING | 10.188.82.11 (eth0) | | PERSISTENT | 0 |
+-------------+---------+---------------------+------+------------+-----------+
pablo@host:~$
Eliminar una imagen publicada en el host
pablo@host:~$ lxc image delete 067b55c92737
pablo@host:~$
Modificar los recursos de CPU y Memoria del contenedor ubuntu-lxc1
ubuntu@ubuntu-lxc1:~$ cat /proc/cpuinfo | grep processor | wc -l
4
ubuntu@ubuntu-lxc1:~$ free -h
total used free shared buff/cache available
Mem: 244M 52M 189M 172K 2.5M 191M
Swap: 975M 0B 975M
ubuntu@ubuntu-lxc1:~$
root@host:~# lxc config set ubuntu4pablo limits.cpu 2
root@host:~# lxc config set ubuntu4pablo limits.memory 512MB
ubuntu@ubuntu-lxc1:~$ cat /proc/cpuinfo | grep processor | wc -l
2
ubuntu@ubuntu-lxc1:~$ free -h
total used free shared buff/cache available
Mem: 488M 52M 433M 172K 2.5M 435M
Swap: 975M 0B 975M
ubuntu@ubuntu-lxc1:~$