Está en la página 1de 6

Docker.

Introducción y primeros pasos


atareao.es/tutorial/docker

Lorenzo Carbonell 14 de septiembre de


2019

El objeto de este primer capítulo del tutorial sobre Docker, es por un lado explicarte que
son los contenedores. Y por otro lado, y creo que mas importante, porque necesitas
conocer, usar y sacar provecho a la tecnología de contenedores. Sin embargo, es
necesario unas primeras pinceladas sobre los contenedores Linux antes de que yo sea
capaz de explicarte porque esa tecnología es imprescindible para ti, y que tarde o
temprano te cambiará la forma en la que te relacionas con las aplicaciones.

En alguna ocasión he escrito algún artículo que toca de forma tangencial los
contenedores, por ejemplo, en el tutorial de scripts en Bash. En el primer capítulo del
tutorial, te indico una solución para comenzar a crear tus primeros scripts, sin miedo a
romper el sistema.

Igualmente, en el episodio 37 del podcast, también te comenté como podías empezar a


relacionarte con el terminal sin miedos utilizando precisamente la tecnología de
contenedores, en particular Docker.

Sin embargo, hasta el momento, no le había dedicado ni el tiempo ni la atención que


esta tecnología se merece. Pero, con este tutorial, estoy dispuesto a cambiarlo de forma
radical, y poner Docker en el lugar que se merece dentro de atareao.es.

Es evidente, que esta tecnología es fundamental para administradores de sistemas y


desarrolladores. Pero, si no perteneces a estos grupos, incluso si utilizas Linux por
afición, realmente merece la pena que aprendas esta tecnología. Solo tienes que ver la
cantidad de contenedores disponibles para utilizar en la Raspberry, y sobre todo lo que
facilita instalar aplicaciones para sacar provecho a este pequeño dispositivo.

1/6
Docker
Como te he comentado en la introducción, antes de comentarte las ventajas de trabajar
con contenedores, y porque esta es una solución que debes implantar en tu día a día, es
mejor que te explique que es esto de los contenedores.

Conceptos básicos

Imágenes
Una imagen es un paquete, en el que se encuentra una aplicación o servicio y todo lo
necesario (código, ejecutables, librerías, configuración, etc) para que esta aplicación
pueda funcionar.

Pero, ¿porque te hablo de imágenes si hasta el momento solo te ha hablado de


contenedores?¿que tiene que ver las imágenes con los contenedores?. Un
contenedor no es mas que una imagen en funcionamiento.

Es el mismo concepto de un ejecutable. La imagen es el ejecutable, y el contenedor es


cada una de las instancias o procesos que hay en funcionamiento. Si has lanzado el
ejecutable tres veces, por ejemplo, tendrás tres instancias del ejecutable. Lo mismo, para
contenedores, puedes tener tres contenedores corriendo de la misma imagen.

Contenedores

2/6
Como te explicaba en el punto anterior, el contenedor no es mas que una instancia de
esa imagen que tiene todo lo necesario para nuestra aplicación. Pero, el contenedor
tiene una característica realmente interesante. El contenedor utiliza y comparte el
sistema operativo de la máquina en la que se está ejecutando, con otras aplicaciones y
por supuesto, con otros contenedores.

Esto es precisamente lo que lo diferencia de una máquina virtual. Las máquinas virtuales
levantan un sistema operativo completo, mientras que los contenedores tienen lo
mínimo imprescindible para el funcionamiento de la aplicación o servicio.

Imágenes y contenedores
Por intentar aclarar mas la diferencia entre imagen y contenedor, quiero ponerte un
paralelismo. El archivo ejecutable de una aplicación cualquiera que tengas instalada en
tu equipo se corresponde con la imagen, como te he comentado anteriormente. Por otro
lado, hay aplicaciones que permiten tener en funcionamiento varias instancias.
Cada una de estas instancias se corresponde con un contenedor.

La diferencia, en este paralelismo, radica en que mientras que cuando terminas la


ejecución de una instancia de la aplicación esta desaparece, al detener un contenedor
este queda en tu equipo ¿porque? La razón para que el contenedor quede en tu
equipo, es porque, por un lado puedes iniciar el contenedor de nuevo, y en segundo
lugar, porque es posible que en el interior de ese contenedor tengas archivos que te
sean de utilidad. Si al terminar la ejecución del contenedor, se borrara de forma
automática, seguro que en mas de una ocasión, te llevarías un disgusto.

Docker
En esto de los contenedores, además de Docker, tienes otras alternativas como LXC
(LinuX Containers), de la cual deriva Docker o LXD, por ejemplo. ¿Porque Docker? Docker
es mas como un gestor de paquetes tipo Snap, Flatpack o AppImage, mientras que LXC es
mas como una máquina virtual mas ligera, en el sentido de que comparte el sistema
operativo con la máquina en la que corre. Esto es a grandes rasgos.

La razón de este tutorial sobre Docker, es precisamente la facilidad que te aporta esta
tecnología para poner en funcionamiento una aplicación en una máquina,
asegurándote de que va a funcionar. Y va a funcionar porque todas las dependencias
que necesita esa aplicación van incluidas en el contenedor. Esto te permite llevar una
aplicación de una máquina a otra con garantías.

Algunas de las razones para adoptar Docker son las siguientes,

Flexible, cualquier aplicación hasta las mas complejas se pueden poner en


contenedores.
Ligero. Los contenedores Docker frente a otras soluciones son ligeros, en tanto en
cuanto, comparte el núcleo de la máquina en la que están funcionando.
Intercambiable. Es posible desplegar actualizaciones al vuelo.
3/6
Portable. Puedes construir una imagen localmente y ejecutarla en cualquier lugar.
Escalable. Es posible poner en funcionamiento tantas réplicas como necesites.

Instalando
Existen dos versiones de Docker. En particular me centraré en la versión Community,
Dentro de esta versión puedes encontrar tres canales de actualización, como en casi
cualquier aplicación que se precie,

Stable. Proporciona las últimas versiones.


Test. Versiones listas para probar.
Nightly. En este canal encontrarás las actualizaciones correspondientes a la
siguiente versión.

Salvo casos excepcionales, lo lógico es que utilices el canal Stable.

Respecto a las plataformas soportadas. Para servidor, lo puedes encontrar en Ubuntu


en cualquier arquitectura x86_64 (or amd64), armhf, arm64, s390x (IBM Z), y ppc64le. En
el momento de escribir este primer capítulo del tutorial estaba disponible para las
versiones siguientes,

Disco 19.04
Cosmic 18.10
Bionic 18.04 (LTS)
Xenial 16.04 (LTS)

Aunque Docker está disponible en los repositorios de Ubuntu, lo mas recomendable


es que te instales el repositorio de Docker, de forma que siempre tendrás la última
versión estable actualizada. Pero, lo mejor es que no te tienes que preocupar de nada,
porque los chicos de Docker, ya se han preocupado de hacer un script que te lo pone
muy fácil. Simplemente ejecuta las siguientes líneas en un terminal

$ curl -fsSL https://get.docker.com -o get-docker.sh


$ sudo sh get-docker.sh

Post instalación

Permisos
Una vez ya tienes instalado docker conviene realizar algunos pasos adicionales para tu
propia comodidad. Lo primero es que para evitar tener que ejecutar docker con
derechos de administrador, tienes que añadir a tu usuario al grupo docker. Para ello,
simplemente ejecuta la siguiente instrucción,

sudo usermod -aG docker $USER

4/6
Si no tienes muy claro esto de los grupos, te recomiendo el artículo sobre gestión de
usuarios y grupos en Linux y el artículo sobre propietarios y permisos del tutorial sobre
el terminal.

Una vez realizado esto, es necesario que salgas y entres en la sesión.

Comprobaciones
Ahora, ya estás en disposición de ver la versión de docker que has instalado. Para ello,
ejecuta la siguiente instrucción,

$ docker -v
Docker version 18.09.5, build e8ff056

Lanzando tu primer contenedor


Ahora es necesario, iniciar tu primer contenedor y ver que todo funciona de manera
correcta. No te preocupes ahora mismo por las instrucciones. Simplemente quieres
saber si Docker está instalado correctamente. Ya verás con detalle las instrucciones y el
funcionamiento de Docker. Para comprobar que todo funciona correctamente, vas a
arrancar tu primer contenedor. Tan solo tienes que ejecutar la siguiente instrucción,

$ docker run hello-world


Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:451ce787d12369c5df2a32c85e5a03d52cbcef6eb3586dd03075f3034f10adcd
Status: Downloaded newer image for hello-world:latest

Hello from Docker!

En pocas palabras, lo que hace esta instrucción es ejecutar un contenedor que te va a


mostrar Hello from Docker . Lo primero que hace es comprobar si tienes la imagen
hello-world localmente en tu equipo. Una vez comprobada que no la tienes, la
descargará del repositorio de imágenes, y la ejecutará.

Lanzando un contenedor en detalle


¿Que es lo que sucede cuando ejecutas docker run hello-world ?. En el apartado anterior
te he resumido la operación en cuatro palabras. Sin embargo, tal y como te describe el
inicio de hello-world , por detrás, se hacen algunas cosas mas.

1. El cliente de docker conecta con el demonio que está corriendo en segundo plano.
2. El demonio, descarga la imagen hello-world de Docker Hub .
3. De nuevo, el demonio entra en acción y crea un nuevo contenedor de esa imagen
recién descargada, y se se ejecuta el proceso, lo que genera la salida que has visto
anteriormente.
4. Por último, el demonio redirige la salida al cliente de Docker que la envía al
terminal.

5/6
En el interior de un contenedor
Si quieres, todavía puedes dar un paso mas. Puedes puedes meterte en el interior de un
contenedor, y echar un vistazo. De esta manera puedes saber como es un contenedor por
dentro. Verás que no hay nada extraño, que todo es mas o menos igual.

Para meterte en el interior de un contenedor ejecuta la siguiente instrucción,

docker run -it ubuntu bash

No te preocupes, que en los siguientes capítulos del tutorial ya verás que es todo esto.

Ya me contarás lo que encuentras dentro de ese contenedor…

Más información

Docker

Imagen de Pexels en Pixabay

6/6

También podría gustarte