Docker: Guía básica

Docker es un sistema de contenedores orientado a microservicios. Es una herramienta que hoy en día está cogiendo mucha fuerza debido a su gran potencia y flexibilidad. Es ideal para el desarrollo de aplicaciones ya que puedes desplegar un docker con un servicio y que este tenga todas las librerías necesarias. De este modo funcionará en cualquier entorno ya sea producción, desarrollo o QA. Además se pueden gestionar mediante un control de versiones para que cada vez que se modifique la imagen de docker quede registrado git style.
Los docker están pensados para ser stateless, es decir que no tengan información que varíe. Para esto, hay que hacer un mappeo de los directorios del docker donde se va a almacenar los datos que cambian y dejarlos en el host.
En este post explicaré un poco como instalar docker en un debian y los comandos mas básicos para empezar a jugar.

Instalación

Instalar paquetes necesarios

apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common

Añadir la key del repositorio

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

Añadir el repositorio

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

Actualizar los repositorios

apt update

Instalar docker

apt -y install docker-ce

Añadir al usuario al grupo de docker

usermod -aG docker $USER

Activar cambios de grupos

$ newgrp docker 

Configuración

Info

Ver la información de docker

docker info
Server Version: 17.03.1-ce

Imagenes

Para buscar imágenes de docker utilizar:

docker search <docker-image>

Descargar una imagen de docker

docker pull <docker_image>

Ver todas las imágenes descargadas

docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
berngp/docker-zabbix   latest              f07539f0c54f        3 weeks ago         1 GB

Borrar imagenes

docker rmi <docker_image>

Crear contenedor

Crear un contenedor nuevo (no es necesario tener descargada la imagen de antes. Si no lo está la descargará automáticamente.)

docker run -d --name <nombre_contenedor> -p <puerto_host>:<puerto_docker> -v <host_volume>:<docker_volume> <docker_image>

Ejemplo:

Vamos a levantar un apache. Para esto, necesitamos que escuche en el puerto 80 y que el volumen donde se almacenan los sites esté en nuestro host.

docker run -d --name apache-ichasco --restart=always -v /srv/apache-ichasco/html:/var/www/html -p 80:80 eboraas/apache-php
-d: iniciar en docker en modo demonio
--name: nombre del contenedor
--restart=always: para reiniciarlo automáticamente si falla
-v: relacionar volumenes del docker con los del host
-p: relacionar puertos

En este caso, tendríamos que crear todos los sites en el /srv/apache-ichasco/html de nuestro host (no del docker)

Logs

Ver los logs

docker logs <nombre_contenedor>

Ver logs en caliente

docker logs -f <nombre_contenedor>

Conectarse a un contenedor

docker exec -i -t <nombre_contenedor> /bin/bash

Iniciar un contenedor

docker start <nombre_contenedor>

Parar un contenedor

docker stop <nombre_contenedor>

Eliminar un contenedor

docker rm <nombre_contenedor>

Guardar los commits creados

docker commit <nombre_contenedor> <docker_image>

Dockers creados

Ver el listado de contenedores creados

docker ps -l
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                         NAMES
514106b988c0        eboraas/apache-php   "/usr/sbin/apache2..."   2 seconds ago       Up 1 second         0.0.0.0:80->80/tcp, 443/tcp   apache-ichasco

Eliminar todos los dockers

Borrar todos los contenedores creados

docker rm -f $(docker ps -aq)  

Borrar todas las configuraciones de docker

docker system prune

Exportar/importar

Exportar un docker a tar

docker export <nombre_contenedor> -o  <nombre_contenedor.tar

Importar un docker

docker import <nombre_contenedor>.tar

Monitorización

Memoria, CPU, Networks… en vivo

docker stats
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
a0c841397962 0.16% 0 B / 0 B 0.00% 2.74 MB / 5.32 MB 52.2 MB / 24.6 kB 0
6ec73a569e6e 0.17% 0 B / 0 B 0.00% 4.76 MB / 2.72 MB 9.68 MB / 533 MB 0

Procesos de un docker

docker top <nombre_contenedor>

Ref:

http://rm-rf.es/como-instalar-configurar-usar-docker-linux-containers/


Also published on Medium.

6 comments

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *