Primeros pasos con Docker
No se si vosotros tenéis el recelo de conservar vuestro equipo lo mas limpio de software que solo vais a necesitar para un proyecto determinado. Ya sea una determinada versión de motor de base de datos, una determinada versión de PHP o algún sistema como Jenkins o SonarQube para trastearlos. A mí al menos se me atascan los chakras cuando he tenido que instalar la enésima versión de un mismo motor de base de datos porque la necesito para un único proyecto.
Para evitar esto siempre he tirado de Virtual Box; tenía preparados unos equipos virtuales ‘vacíos’ para clonarlos y torturarlos con mis pruebas. Pero claro, estas imágenes dejaban mi ordenador frito de memoria y CPU, además de darle un buen bocado a mi disco duro. Un día descubrí Docker y mi vida cambio a mejor. Docker ofrece una virtualización ligera, evita la virtualización del sistema operativo.
En esta entrada os voy a contar mis primeros pasos con Docker así como un par de casos de uso que pude cubrir con él. Los siguientes comandos están pensados para una instalación de Docker en Windows, para instalaciones en Linux los comandos pueden diferir un poco.
Conceptos básicos de Docker
Docker hace uso de un repositorio de imágenes. Estas imágenes pueden ser sistemas operativos ‘pelados’ pero operativos para trabajar con ellos o bien pueden ser sistemas preinstalados como pudiera ser un servidor web o una base de datos. Cada instancia que se levanta de una imagen se denomina contenedor. Si buscamos la analogía entre Virtual Box y Docker, una ISO de Ubuntu es a una imagen Docker lo que una máquina virtual es a un contenedor.
Cómo arrancar un contenedor con Apache
El siguiente comando sería la forma más básica de levantar un Apache:
docker run httpd:latest
Este comando crea un contenedor a partir de la última versión de la imagen httpd (la cual descargará del repositorio hub.docker.com de no tenerla descargada). Seguidamente se muestra la salida estándar del contenedor en la consola. Para que el contenedor se ejecute en segundo plano y la consola quede liberada usaremos la opción –detach (-d):
docker run -d httpd:latest
También comentar que este servidor no estará accesible aun desde nuestro equipo. Los contenedores se crean en la red bridge y solo son accesibe desde ella. Para que sean accesibles desde fuera de esta red hay que ‘mapear’ el puerto del host al puerto del contenedor. Por ejemplo para mapear el puerto 80 de nuestro host al 80 del contenedor lo hacemos añadiendo al comando el parámetro –publish (-p) de la siguiente forma:
docker run -d -p 80:80 httpd:latest
De esta forma ya estaría accesible el servidor accediendo al puerto 80 de nuestro local:
Comandos básicos de manejo de Docker
Y como no podría explicar más apartados de este sistemas sin dedicarle una entrada entera a cada uno de ellos voy a dejar una lista de los comandos necesarios para manejarse con los contenedores, las imágenes, etc, y que podais dar los primeros pasos con Docker.
Y por supuesto no están todos ni todas sus opciones. Para consultar la ayuda lo haremos con la opción –help (ej: docker network –help)
Lanzar un contenedor
docker run -d -p 80:80 httpd:latest
Parar un contenedor
docker stop CONTAINER_ID
Eliminar un contenedor
docker rm CONTAINER_ID
Consultar imágenes descargadas
docker image ls
Eliminar imagen
docker image rm IMAGE_ID
Consultar info de imagen
docker image inspect IMAGE_ID
Listado de redes
docker network ls
Contenedores en ejecución
docker ps
Consulta de contenedores en ejecución y parados
docker ps -a
Información de un determinado contenedor
docker inspect CONTAINER_ID
Con estos comandos será suficiente para dar los primeros pasos con Docker y para que os surjan nuevas dudas y curiosidades. En próximos artículos nos adentraremos en algunos aspectos de Docker en profundidad.