Desde la página oficial de Docker podemos ver las diferentes instalaciones de Docker para Windows, Mac OS y Linux.
En esta ocasión vamos a instalar Docker en una distribución de Linux, no hay una razón en especial, aunque si pudiera dar alguna, diría que es porque Docker es una herramienta desarrollada para este sistema operativo primordialmente.
Vamos a comenzar, yo tuve que crear una máquina virtual con VirtualBox y descargué la siguiente versión: Ubuntu-18.04.3-desktop. Esta versión es soportada para instalar Docker. En caso de que tengas una versión de Linux ya instalada, favor de verificar si está certificada para poder usar Docker.
La instalación de mi Linux es limpia y lo hice sobre una máquina virtual porque mi sistema operativo es Windows; pero aquí hay varias opciones: pueden instalar Docker para Windows, o pueden instalar Ubuntu en su máquina base ya sea mediante una partición y usar un arranque dual o instalar completamente Ubuntu; la más sencilla para mí fue crear una máquina virtual para ejecutar diferentes pruebas.
Instalar el ISO de Ubuntu con las opciones por defecto. Una vez en la máquina virtual inicie, vamos a instalar Docker con el administrador de paquetes. Existen otras opciones, pero he seleccionado esta debido a que es una buena opción para actualizar o regresar una versión de manera rápida. Ahora debemos ejecutar los siguientes comandos desde una shell:
Revisar la versión instalada
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
Actualizar el sistema operativo
sudo apt-get update
Instalar los paquetes requeridos
sudo apt-get -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
Agregar Docker GPG Key y repositorio
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Instalar Docker CE versión 18.09.5
sudo apt-get update
sudo apt-get install -y docker-ce=5:18.09.5~3-0~ubuntu-bionic docker-ce-cli=5:18.09.5~3-0~ubuntu-bionic containerd.io
Revisar otras versiones disponibles
apt-cache madison docker-ce
Verificar la instalación
sudo docker version
Agregar a nuestro usuario, en mi caso se llama dev, al grupo docker que se creó con la instalación:
sudo usermod -a -G docker dev
Este paso es necesario para no estar escribiendo los comandos con sudo. Cerrar la terminal y abrir una nueva para que los cambios tomen efecto. En mi caso este paso no funcionó, por lo que tuve que reiniciar la máquina completa.
Ejecutar tu primer contenedor
docker run hello-world
Este comando descarga una imagen llamada hello-world. En caso de que no exista en tu máquina local, esta se descargará desde Docker Hub. Automáticamente después se creará un contenedor y ejecutará el servicio que contiene, el cual solo manda un mensaje a la consola para luego terminar.
Configurar Docker Compose
Esto sirve para levantar varios contenedores utilizando un archivo como el Dockerfile, pero para generar un ambiente en un solo nodo con varios contenedores, llamados servicios.
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose version
Lo que hicimos fue descargar el binario, darle permisos y revisar la versión, eso sería todo.
Verificar Docker Compose
Vamos a crear un archivo llamado docker-compose.yaml. En realidad el nombre no es importante en este caso. Agregar el siguiente contenido:
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
redis:
image: redis:alpine
Este archivo contiene un solo servicio, el cual es la forma de llamar a los contenedores en docker-compose. Este comando podría haberse hecho de forma declarativa con el mismo resultado, solo es para fines demostrativos.
$ docker-compose up -d
Con ese comando levantamos nuestros servicios en la misma máquina, un solo nodo.
Verificar y detener contenedores
$ docker-compose ps
$ docker-compose down
Esto es todo.