Después de presentar el proyecto Icaro, veo con la necesidad de hacer una introducción a Docker.

imágen de: https://docker-curriculum.com/

Siempre he pensado que el conocimiento práctico, es el conocimiento que te permite ver el comportamiento de una tecnología nueva y te ayuda a obtener la primera impresión sobre su funcionamiento.

Después de adquirir esta primera impresión, debería ser seguido de un conocimiento más detallado, que te permita implementar esta nueva situación en un entorno más productivo.

DOCKER Y LA ORQUESTACIÓN DE CONTENEDORES

Hace unos años, después del lanzamiento oficial de docker, se encontraron con la necesidad de un orquestador de contenedores, que hiciera todo el proceso un poco mas sencillo.

Actualmente contamos con varias herramientas de orquestación, una de las más famosas podría ser Kubernetes, de ahora en adelante k8s, también tenemos un orquestador llamado swarm que seguramente vendrá con la instalación de docker y podremos hacer una prueba de concepto bastante rápido.

INSTALACIÓN

Esta es la parte, la cual, seguramente mucha gente se pueda saltar, la pongo por si se da el caso de que alguno de vosotros no tengáis alguna versión de docker en vuestra máquina.

Si queréis más información, podéis ir a la documentación oficial de docker.

Obviamente no os recomiendo qué instaléis docker en windows, no sería lo más eficiente en este caso, por lo menos por ahora.

INSTALACIÓN DOCKER UBUNTU

Cómo he dicho antes, he levantado un docker con ubuntu:latest, en un pequeño servidor de andar por casa, para esta instalación.

Lo primero que hacemos es actualizad con un update nuestra máquina, en el caso que no este ya actualizada

sudo apt-get update
resultado apt-get update

Una vez nuestro sistema esta actualizado, en el caso que tengamos una versión previa, limpiamos esta versión.

 apt-get remove docker docker-engine docker.io containerd runc

Llegados a este punto, y sobre todo en mi caso que es un docker in docker, instalo las herramientas que necesito o son dependencias para continuar la guia.

apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
dependencias a instalar

El resultado de la instalación debería de devolver algo similar a la siguiente imagen. Si veis alguna clase de error, podéis preguntarme y estaré encantado de ayudaros, haréis que este primer post sea un poco más interesante.

Ya tenemos la máquina preparada para instalar nuestro docker.

Empezamos añadiendo la GPG key a nuestro apt, de la siguiente manera

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

Con un fabuloso OK nos responderá, el sistema. Una vez tenemos añadamos la key, deberíamos confirmar en que tipo de arquitectura se basa nuestro ubuntu, si ya lo sabéis ignorar esta parte.

uname -m

en mi caso amd64, según el tipo de arquitectura será lo que defina el siguiente comando de instalación, el cual añadirá el repositorio correcto a nuestro ubuntu.

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Ahora si que tenemos totalmente echos los preparativos y el repositorio correcto de nuestro futuro docker. Ahora toca volver a actualizar nuestro sistema y lanzar el comando de instalación de nuestro entorno docker

apt-get update
apt-get install docker-ce docker-ce-cli containerd.io

Terminado el proceso comprobamos la versión de docker instalada en nuestro sistema

IMÁGENES Y CONTENEDORES

Como en la programación, como en cualquier otro sector que requiera versiones existe la necesidad de tener una herramienta que controle las versiones que vamos desarrollando.

Docker como una herramienta más, la cual nos permite generar imágenes, también existe la necesidad de tener versionadas estas imágenes y como tal existe un repositorio.

omo en github, tenemos la posibilidad de tener un repositorio en la nube de manos de https://hub.docker.com/ si usáramos amazon, usaríamos amazon ECR (Elastic Container Registry) https://aws.amazon.com/es/ecr/

COMANDOS BÁSICOS

IMAGENES

Un buen punto de partida sería los comandos más comunes para el uso de images, como podría ser

docker images
resultado docker images

Para seguir con el manejo de imágenes podemos continuar con el comando que nos permite bajarnos las imágenes de docker hub a nuestro local.

Por ejemplo para descargar ubuntu:latest, sería

docker pull ubuntu:latest
resultado docker pull

Llegados a este punto, el siguiente paso lógico para tratar con imágenes, es como eliminar estas imágenes de nuestro local.

docker rmi IMAGE ID

Con estos pocos comandos podemos movernos en el uso de imágenes, en nuestro local.

Si tenemos una cuenta de docker hub, podemos usarla para subir nuestras imágenes y/o contenedores modificados, también podríamos usar un registry propio y subir las imágenes en dicho repositorio.

DOCKER HUB / REGISTRAR, TAGEAR y SUBIR IMÁGENES


Sino te importa tener el repositorio abierto, es una buena opción docker hub, en su versión de pago, el cual te permite, ha día de hoy, tener un repositorio privado y los que quieras abiertos.

Obviamente si no hay problema de presupuesto y no quieres tener en tu infraestructura una herramienta más que gestionar, utiliza su versión de pago.

En el caso que no quieras una cuenta en docker hub y prefieras tener tu propio tu registro de docker en local o en «hierro»

docker run -d -p 5000:5000 –restart=always -docker push localhost:5000/my-ubuntu-name registry registry:2

docker run -d -p 5000:5000 --restart=always --name registry registry:2

Aunque hablaremos más abajo del comando run, es interesante comentar, que los contenedores lanzados con run, no tienen políticas de restart por defecto, por eso se añade –restart=always

Una vez ya tenemos nuestro registry, lo subiremos en local, para docker hub, no hace falta poner la máquina, para cualquier otra opción es necesario.

Utilizando el ejemplo de la documentación que la tenéis en: https://docs.docker.com/registry/deploying/

docker tag ubuntu:16.04 localhost:5000/my-ubuntu

Esto nos crearía un tag que es lo que subiremos a nuestro docker hub, para subirlo ejecutamos el siguiente comando

docker push localhost:5000/my-ubuntu

con esto ya tendríamos la imagen en nuestro repositorio local, para comprobarlo hacer un pull contra vuestro registry

docker pull localhost:5000/my-ubuntu

Deja una respuesta