Docker: concepto e instalación

¿Qué es Docker y cómo funciona?

Simplificando mucho la definición, podríamos decir que docker es una especie de máquina virtual, pero muy ligera.

Para que nos hagamos una idea es como si nos disfrazamos de negro y solo nos cambiásemos la máscara. Podríamos ser Batman, Black Panther o Negro Oscuro de The Boys. Entonces, podríamos decir que cada superhéroe es un contenedor.

Mientras que una máquina virtual se cambia el disfraz por completo (carga la cpu 'virtualizada', la tarjeta de red, memoria, etc.), Docker solo se cambia la máscara.

De esta forma podemos “crearnos un pc” de una forma muy rápida, ya que solo carga las librerías del sistemas operativo.

Según AWS, Docker es una plataforma de software para contenedores. De manera similar a como una máquina virtual 'virtualiza' (elimina la necesidad de administrar directamente) el hardware del servidor, los contenedores 'virtualizan' el sistema operativo de un servidor.

Docker se instala en cada servidor y proporciona comandos sencillos que puede utilizar para crear, iniciar o detener contenedores.

¿Qué quiere decir esto? Pues significa que Docker es una plataforma de contenedores para ejecutar aplicaciones de forma aislada y eficiente.

A continuación, explicamos las diferencias con las VM:

 

Al utilizar una VM estamos reservando memoria y disco para cada máquina virtual, se utilice o no, por lo que estaremos desaprovechando bastantes recursos de nuestro hierro.

Al utilizar docker, los recursos se comparten entre todos los contenedores. Además podremos especificar el mínimo y el máximo de memoria y CPU a utilizar por cada contenedor.

 

Instalación

Sistema operativo: CentOS 7

En primer lugar tenemos que instalar CentOS 7 en nuestro servidor. Una vez que lo hayamos hecho avanzamos para instalar Docker.

Por seguridad, nos crearemos un usuario llamado “CI” y desde ahí lanzaremos todos los comandos.

Si por cualquier motivo nos diera algún problema las instalaciones, las realizaremos desde root.

 

Instalar Docker

$ curl -sSL https://get.docker.com | sh
$ sudo systemctl start docker
$ sudo systemctl enable docker

Damos permiso al usuario "CI" para lanzar el comando docker.

$ sudo usermod -aG docker ci

 

Dar más espacio de VM a Docker (opcional)

Es probable que los límites predeterminados del sistema operativo en los recuentos de mmap sean demasiado bajos, lo que puede ocasionar excepciones de falta de memoria.

$ sudo vi /etc/sysctl.conf
vm.max_map_count=262144

fs.file-max=65536
$ sudo sysctl -p

 

Instalar Docker-Compose

Nos vamos a la zona del release de github.com y vemos cuál es la última release, a fecha de hoy (19/11/2020) la última versión es la 1.27.4. Cuando cambie solo hay que cambiar ese valor en la siguiente URL del curl.

$ sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-uname -s -uname -m -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

 

Habilitar firewall por delante de Docker

Para que no cree reglas 'iptables' automáticamente, añadimos lo siguiente a /etc/docker/daemon.json

De esta forma el firewall-cmd será el que controle los puertos y no el 'iptables'.

{
“iptables”: false
}

 

Es posible que después de esto los contenedores se queden sin conexión, ni con el exterior ni entre ellos. Por ello, para solucionarlo hay que reiniciar el servicio de Docker con el archivo daemon.json renombrado (para que no lo coja), y volver a reiniciarlo con el json de nuevo relleno, tal y como lo tenemos.

 

Cambiar la ruta donde se alojarán las imágenes

$ sudo service docker stop
$ sudo vi /etc/docker/daemon.json
{
“data-root”: “/mnt/docker”
}
$ sudo service docker start

 

Probar si todo funciona

$ docker run -dit --name web-demo -p 8001:80  httpd:2.4
$ firewall-cmd --add-port=8001/tcp

 

En este momento, si accedemos a http://localhost:8001 desde nuestro navegador, deberíamos poder ver la carátula del apache de nuestro nuevo contenedor web que acabamos de crear.

 

Si estáis interesados en Docker y queréis ver un vídeo en el que se explica cómo utilizarlo, aquí os dejamos esta píldora formativa de nuestro canal de Youtube denominada 'Docker: from zero to hero', en la que podéis encontrar las claves necesarias para manejaros por esta tecnología opensource con soltura.

 

Posts relacionados

‘Ngrok’: una herramienta con la que hacer público tu localhost de forma fácil y rápida

‘Ngrok’: una herramienta con la que hacer público...

Comentarios
¿Qué opinas? Escríbenos. Nos encantará leerte :)