En un artículo anterior escribimos sobre cómo instalar Docker en CentOS 7
Docker es la herramienta más popular para la creación de contenedores. Con Docker podemos desarrollar aplicaciones utilizando la arquitectura de microservicios.
Docker permite la creación de contenedores en base a imágenes. Un contenedor es una instancia en memoria de una imagen.
Para lo que tienen conocimientos de virtualización, una analogía sería que una Máquina Virtual (VM) es una instancia de un Template.
Una imagen es un paquete ejecutable que contiene la parte del sistema operativo, librerías, variables de entorno y dependencias necesarias para la ejecución de una aplicación.
La tecnología de contenedores permite desacoplar el sistema operativo de las aplicaciones o servicios que corren sobre este. Por ejemplo, si tenemos una base de datos MongoDB ejcutándose en el servidor, podemos parchear el sistema operativo sin tener que preocuparnos la actualización de alguna dependencia utilizada por MongoDB.
Una aplicación contenerizada la podemos ejecutar en cualquier servidor que contenga el Docker Engine instalado.
El contenedor uiliza el kernel del OS instalado en la máquina host, por lo tanto, un contenedor creado en Linux solo funciona en esta plataforma. Sin embargo, podemos ejecutar el contenedor en cualquier distribución Linux ya que todas comparten el mismo kernel.
He aquí los comandos más utilizados por DevOps y SysAdmin para la administración de una infraestructura basada en contenedores.
$docker ps
Imprimer en pantalla información sobre los contenedores que está en ejecución:
CONTAINER ID = Identificador único de un contenedor
IMAGE = La imagen utilizado para la creación del contenedor
COMMAND = Comando ejecutado al momento ejecutar el contenedor
CREATED = Muestra el tiempo de vida que tiene el contenedor
STATUS = Muestra el estado actual del contenedor
PORTS = Muestra el puerto que la aplicación dentro del contenedor utiliza para recibir conexiones
NAMES = Nombre del contenedor
$docker pull
Descarga una imagen desde un repositorio. En este caso descargamos la imagen “apache” para instanciar un contenedor con el servicio web Apache.
$docker run
Instanciamos con contenedor a partir de la imagen httpd.
$docker logs
Muestra el log del contenedor; muy útil al momento de resolución de problemas.
$docker volume ls
Lista los volúmenes creados en Docker. Un volume es una abstracción para guardar información de forma persistente (persistent storage). La información alcenada en un volumen perdura más allá del ciclo de vida de un contenedor.
Un volume permite que podamos destruir un contenedor sin tener que perder los datos. Adicionalmente, en volume puede ser adjuntado a otro contenedor.
$docker image ls
Lista todos las imágenes que tenemos disponible localmente para crear contenedores.
REPOSITORY = Origen desde donde descargamos la imagen.
TAG = Identificador optional.
IMAGE ID = Identificadodor único de la imagen
CREATED = Tiempo que tiene la imagen en el sistema desde el momento que fue descargada.
SIZE = Tamaño del archivo
$docker container rm
Comando utilizado para borrar un contenedor. Para borrar un contenedor en ejecución primero debemos detener el contenedor.
$docker image rm
Comando utilizado para borrar imagen.
$docker stop
Comando utilizado para detener un contenedor.
$docker start
Comando para inicializar un contenedor.
$docker container rm $(docker container ls -a -q)
Comando para borrar todos los contenedores.
$docker image rm $(docker image ls -a -q)
Comando para borrar todas las imágenes.
$docker volume rm $(docker volume ls -q)
Comando para borrar todos los volúmenes
$docker network rm $(docker network ls -q)
Comando para borrar todas las redes virtuales utilizadas por Docker
$docker stats –format “table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}”
Este comando muestra los recursos consumidos por Docker en el nodo host.
Existen más comandos interesantes en Docker. Si quieres conocer más, puedes consultar la documentación del CLI de Docker. Te recomendamos que experimentes un poco con esta tecnología, ya que es el presente y el futuro de la creación y administración de infraestructura.