Un contenedor Docker es en realidad un grupo de recursos que se reserva del hardware de nuestra máquina para una función específica. Este grupo de recursos funciona prácticamente como una máquina independiente.
En Mac y en Windows al instalar Docker, lo que realmente se instala es un máquina virtual Linux donde realmente se hará la gestión de nuestros contenedores.

Comandos básicos

docker run nombreDeContenedor

Este es el comando básico que aprendemos cuando empezamos a trabajar con Docker. Este comando hace lo siguiente:
1. Comprueba si tenemos en nuestro disco duro la imagen o el fichero de imagen que hemos solicitado.
2. Si no lo tenemos se va a buscarlo a la Docker Hub (marketplace con todos los contenedores públicos) y lo descarga.
3. Crea un contenedor a partir de la imagen que tenemos o teniamos ya en nuestro disco duro.
4. Inicia el contenedor pertinente ejecutando el comando de inicio que tenga configurado el contenedor.
5. Nos muestra un log con la salida de información que tenga configurado ese contenedor (o con los errores que nos haya generado)

docker create nombreDeContenedor

Esto serían solo los pasos 1,2 y 3, es decir, nos crea el contenedor pero no lo arranca.

docker start idDeContenedor

Esto nos inicializa un contenedor a partir del ID que nos ha generado al crearlo o el NOMBRE (OJO no es el nombre de la imagen si no el del propio contenedor). Con docker start no veríamos nada en la consola, esto simplemente arranca el contenedor en segundo plano (por decirlo de alguna manera)

docker start -a idDeContenedor

Igual que el anterior pero si nos muestra el log por la consola.

docker ps

Con docker ps vemos la información de los contenedores que tenemos activos actualmente

Captura-de-pantalla-2018-11-05-a-las-10.01.53

Aquí podemos ver:

  • Container ID: El id único que tiene el contenedor que hemos creado
  • IMAGE: La imagen de la que parte el contenedor, es decir, el fichero de configuración a partir del cual se ha creado
  • COMMAND: El comando de inicio que ejecuta nuestro contenedor al iniciarse.
  • CREATED: Hace cuanto hemos creado el contenedor.
  • STATUS: El estado actual del contenedor, si esta arrancado, apagado o en error.
  • PORTS: En el caso de que tuvieramos algún puerto de nuestro equipo direccionado a alguno del contender aparecería aquí.
  • NAMES: Los nombres que tiene el contenedor, a partir del cual podemos llamarlo como si fuera su ID. Este nombre se crea automáticamente o lo podemos indicar nosotros a la hora de crear el contenedor (docker create o docker run)
docker ps --all

Nos muestra todos los contenedores que tenemos creados, tanto si están encendidos como si no.

Captura-de-pantalla-2018-11-05-a-las-10.07.33

docker system prune

Elimina todos los contenedores parados, las redes sin usar, las imagenes descargadas....

docker stop Id/NameContainer

Envia la señal SIGTERM al contenedor para que se apague correctamente cerrando los procesos de la manera correcta.

docker kill id/NameContainer

Envía la señal SIGKILL al contenedor, que lo que hace es cerrar todo en plan guantelete del infinito.

Que hacer cuando un contenedor ya esta arrancado y quiero ejecutar un comando?

docker exec -it idContainer Comando
  • exec: Indicamos que ejecute un comando.
  • it: básicamente es que queremos que nos devuelva la consola con el comando que hemos ejecutado. Sin it ejecutaría el comando pero no veríamos que pasa.

Veamos un ejemplo con un contenedor de Redis

Captura-de-pantalla-2018-11-06-a-las-9.14.04

Vemos que se esta ejecutando
Captura-de-pantalla-2018-11-06-a-las-9.14.25

En este estado podemos ejecutar comandos y tomar control de la sesion
Captura-de-pantalla-2018-11-06-a-las-9.15.05
Captura-de-pantalla-2018-11-06-a-las-9.15.31