Ejecutar tu primer contenedor Docker


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.