/ HOWTO

Ubuntu 18.04 en un Contenedor con Docker.

Probamos Ubuntu 18.04 en un contenedor Docker, en lugar de crear un servidor virtual. Lo que buscamos en verificar otros aplicativos corriendo sobre Ubuntu 18.04.

Hoy probaremos Ubuntu 18.04 “Castor Biónico” en un contenedor Docker, en lugar de tener que instalarlo en un equipo real o virtual, demorar un rato para configurarlo, crear cuenta de acceso, claves, zona horaria, particiones de disco… Mejor usamos Docker.

# docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
e1431537f6d3: Already exists
0e318c3f4b1d: Already exists
a77eaecc130c: Already exists
43d315640310: Already exists
02830adeac1d: Already exists
Digest: sha256:f3646c458e813e71ecc248801d4b241c2536e55ae37662c51076f225c228f1a8
Status: Downloaded newer image for ubuntu:18.04
# docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
ubuntu                         18.04               66a5a351d4ab        7 days ago          85.6MB
# docker run -it ubuntu:18.04 /bin/bash
root@e4b59e0a0376:/#

Verificamos el Kernel que tenemos corriendo en el contenedor.

# uname -a
Linux e4b59e0a0376 4.9.65-1-MANJARO #1 SMP PREEMPT Fri Nov 24 10:42:19 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

También la versión del shell (bash en nuestro caso)

# bash -version
GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2016 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.

Curiosamente en mi propio equipo real tenemos una muy parecida, pero no es la misma. Como pensamos, el contenedor ha instalado un shell definido por Ubuntu 18.04.

# bash -version
GNU bash, version 4.4.12(1)-release (x86_64-unknown-linux-gnu)
Copyright (C) 2016 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.

Para verificar que usaremos las últimas versiones, hacemos un “Update/Upgrade”

# apt update
apt update
Get:1 http://archive.ubuntu.com/ubuntu bionic InRelease [235 kB]
Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [65.4 kB]
Get:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [65.4 kB]
Get:4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [65.5 kB]
Get:5 http://archive.ubuntu.com/ubuntu bionic/universe Sources [11.4 MB]
Get:6 http://archive.ubuntu.com/ubuntu bionic/multiverse amd64 Packages [186 kB]
Get:7 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages [11.0 MB]
Get:8 http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages [1398 kB]
Get:9 http://archive.ubuntu.com/ubuntu bionic/restricted amd64 Packages [14.7 kB]
Fetched 24.3 MB in 5s (4430 kB/s)
Reading package lists... Done
Building dependency tree... Done
15 packages can be upgraded. Run 'apt list --upgradable' to see them.
# apt upgrade
apt upgrade
Reading package lists... Done
Building dependency tree... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  e2fsprogs-l10n
The following packages will be upgraded:
  debianutils e2fslibs e2fsprogs gcc-7-base libcomerr2 libgcc1 libgcrypt20 libgpg-error0 libselinux1 libss2 libstdc++6 libsystemd0
  libudev1 perl-base sensible-utils
15 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 3397 kB of archives.
After this operation, 57.3 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu bionic/main amd64 debianutils amd64 4.8.3 [85.8 kB]
Get:2 http://archive.ubuntu.com/ubuntu bionic/main amd64 e2fslibs amd64 1.43.7-1 [157 kB]
Get:3 http://archive.ubuntu.com/ubuntu bionic/main amd64 e2fsprogs amd64 1.43.7-1 [498 kB]
Get:4 http://archive.ubuntu.com/ubuntu bionic/main amd64 perl-base amd64 5.26.1-2ubuntu1 [1389 kB]
Get:5 http://archive.ubuntu.com/ubuntu bionic/main amd64 libsystemd0 amd64 235-2ubuntu3 [196 kB]
Get:6 http://archive.ubuntu.com/ubuntu bionic/main amd64 gcc-7-base amd64 7.2.0-16ubuntu1 [18.5 kB]
Get:7 http://archive.ubuntu.com/ubuntu bionic/main amd64 libstdc++6 amd64 7.2.0-16ubuntu1 [396 kB]
Get:8 http://archive.ubuntu.com/ubuntu bionic/main amd64 libgcc1 amd64 1:7.2.0-16ubuntu1 [39.4 kB]
Get:9 http://archive.ubuntu.com/ubuntu bionic/main amd64 libcomerr2 amd64 1.43.7-1 [11.4 kB]
Get:10 http://archive.ubuntu.com/ubuntu bionic/main amd64 libgpg-error0 amd64 1.27-5 [36.9 kB]
Get:11 http://archive.ubuntu.com/ubuntu bionic/main amd64 libgcrypt20 amd64 1.8.1-4 [417 kB]
Get:12 http://archive.ubuntu.com/ubuntu bionic/main amd64 libselinux1 amd64 2.7-2 [68.3 kB]
Get:13 http://archive.ubuntu.com/ubuntu bionic/main amd64 libss2 amd64 1.43.7-1 [11.1 kB]
Get:14 http://archive.ubuntu.com/ubuntu bionic/main amd64 libudev1 amd64 235-2ubuntu3 [54.3 kB]
Get:15 http://archive.ubuntu.com/ubuntu bionic/main amd64 sensible-utils all 0.0.11 [14.8 kB]
Get:16 http://archive.ubuntu.com/ubuntu bionic/main amd64 e2fsprogs-l10n all 1.43.7-1 [2856 B]
Fetched 3397 kB in 0s (4342 kB/s)

debconf: delaying package configuration, since apt-utils is not installed
(Reading database ... 4116 files and directories currently installed.)
........
Selecting previously unselected package e2fsprogs-l10n.
Preparing to unpack .../e2fsprogs-l10n_1.43.7-1_all.deb ...
Unpacking e2fsprogs-l10n (1.43.7-1) ...
Setting up sensible-utils (0.0.11) ...
Processing triggers for libc-bin (2.26-0ubuntu2) ...
Setting up e2fsprogs-l10n (1.43.7-1) ...

También instalamos dos paquetes para probar (mc y nmap.

# apt install mc nmap

Al ser una versión Beta, tendremos actualizaciones todas las semanas, a veces todos los dias.

Me preguntaba si este contenedor sería suficientemente válido para probar al completo el nuevo Ubuntu 18.04 y correr sobre él otras aplicaciones.

Al instalar paquetes y asegurarnos que son los que corresponden a la versión 18.04, estoy seguro que (por ejemplo) el “mc” es el que está definido para la versión. En caso de instalar motores de bases de datos, Caches, webs… siempre tendremos corriendo el demonio/app de la versión.

PERO, y siempre hay un pero.

El contenedor es un entorno aislado y lo que contiene instalado serán los programas que corran, sin embargo, el Kernel que usarán todos los contenedores que corran en mi equipo real, es el Kernel de “mi equipo real”, aunque Ubuntu 18.04 traiga un kernel mas nuevo o viejo, el contenedor no lo usará.

Los programas, bibliotecas, ficheros de configuración, de datos… serán los que estén definidos en Ubu 18.04, el Kernel no.

Es un tema muy importante y relevante, porque si lo que buscamos es probar la interacción de programas con el futuro kernel de la versión de Ubu 18.04, no lo podremos emular, salvo que en el equipo real instalemos exactamente el mismo kernel que traerá Ubu 18.04.

Como muchas veces buscamos “probar” sin “cambiar”, los Contenedores son una muy buena alternativa pero no contempla el 100% de “las pruebas”.

Tenedlo en cuenta.

Subscríbete y recibirás los últimos artículos semanalmente en tu email.