Maneja DOCKER en 5 días. Mejora como SysAdmin Linux o DevOps

Docker vs Hypervisor

Docker nos permite virtualizar contenedores que estos manejan su propio sistema independiente y estos se ejecutan en un mismo sistema operativo compartiendo recursos.

Aquí podemos ver la diferencia de docker vs máquinas virtuales.

Para este curso necesitaremos linux, en mi caso use una máquina virtual con Oracle Virtual Box, en mi caso opté por el viejo confiable que es Ubuntu.

La instalación la hacemos usando la terminal con las instrucciones desde la página oficial: https://docs.docker.com/engine/install/ubuntu

Docker Hub

Docker Hub es un sitio oficial de docker donde tenemos una biblioteca de imagenes listas para montar, desde sistemas operativos y aplicativos, como sql server for linux, que es el que he usado para un VPS que tengo en OVH.

Para este curso bajaremos la siguiente versión de debian: debian:bullseye

Recordemos que cada imagen puede tener múltiples tags, eso hace referencia que son versiones del mismo sistema y este se define con dos puntos <:>, ejemplo:

Al ejecutar docker run, es el comando para inicializar un contenedor, pero al no encontrarlo comienza a descargarlo desde el repositorio.

El comando para enlistar los contenedores en ejecución es el siguiente:

docker ps

Sin embargo posiblemente se muestre vacío, por eso añadir el parámetro -a para mostrar todos, aunque estos no esten en ejecución.

docker ps -a

También existe un comando similar que nos dirá que imágenes que tenemos descargadas/disponibles, una imagen es digamos que el archivo fuente para poner en marcha un contenedor. El contenedor es la imagen ya ejecutada/corriendo.

docker images

Comandos esenciales:

Mostrar información de nuestro estado general de docker_

docker info 

Crear un contenedor a partir de una imagen

docker run 

Eliminar un contenedor:

docker rm <IdContedor>

Ejecutar un contenedor con un comando -it que es una abreviación de –interactive.

Esta parte me trajo confusión ya que no encontré mucha documentación así que indagando esta respuesta de stackoverflow me pareción interesante:

Docker’s / allows you to send commands to the container via standard input («STDIN»), which means you can «interactively» type commands to the pseudo-tty/terminal created by the switch.
-i--interactive-t

Aquí realizando la ejecución, descarga la última imagen de debian , inicia el contenedor y la consola bash:

Como podemos ver, el @ ahora tiene un identificador y ya no es el nombre de nuestro equipo, esto quiere decir que estamos dentro del contenedor y su terminal.

Tip de productividad al trabajar en la consola de linux.

Para copiar y pegar algo en automático de la terminal, simplemente seleccionamos y apretamos el tercer botón del mouse.

Ejecutar un contenedor en segundo plano

Para este ejemplo lanzaremos un contenedor de un servidor http (apache), con el siguiente comando:

docker run httpd

Nos ejecutará en primer plano y para salir tendremos que presionar Ctrl + C como si estuviéramos en un editor de texto y se cerrara el contenedor.

Para ejecutar en segundo plano usaremos el comando -d

docker run -d httpd

Saber la ip asignada a un contenedor

Usaremos el comando docker inspect, sin embargo esto muestra bastante información, entonces añadiremos el parámetro | less

docker inspect 2b113500a6c8| less

Para salir del modo less presionamos la tecla «

Para acceder directamente a la línea que nos interesa, podemos apoyarnos del comando grep

docker inspect 2b113500a6c8| grep IPAddress

Final mente ejecutamos docker stop para detener nuestra imagen y luego borrarla con docker rm

Docker ps opciones

Para poder visualizar la ayuda o opciones de un comando, podemos poner el parámetro –help al final de nuestro comando, se desplegará lo siguiente:

Opciones con el comando docker ps

-aMuestra todos los contenedores independientemente de su estado
-lúltimos contenedores creados (lates)
-qSolo los identificadores de los contenedores
-sCuánto espacio ocupa cada contenedor
-fFiltra la lista de contenedores según criterios (Profundizar con documentación)
–formatPodemos elaborar nuestro propio formato del listado y que campos traer.
(Profundizar con documentación)

Eliminar contenedores

El comando rápido para borrar nuestro contenedor (previamente detenidos)

docker rm <ContainerId>

Detener todos los contenedores activos

docker stop $(docker ps -q)

Ejecutar comandos dentro de contenedores

Para ejecutar un comando en un contenedor, este tiene que estar en ejecución, para evitar su cerrado ponemos la opción -di o –detach

docker run -di debian

Ejemplo para ejecutar un comando dentro de un contenedor:

docker exec 683cc25900a6 uname -a

Para entrar dentro de batch y ejecutar múltiples comandos, podremos entrar de modo interactivo con el siguiente comando:

docker exec -it  683cc25900a6 bash