Docker – Referencia de comandos

WORK IN PROGRESS

Índice

Operaciones con imágenes

Listar imágenes locales

Este comando proporcionará, entre otros datos, el ID de las imágenes (IMAGE ID) descargadas en el entorno local que se utilizará para referenciar dichas imágenes en otras operativas.

docker image ls

Crear una imagen a partir de un Dockerfile

sudo docker image build -t <etiqueta imagen> --build-arg <argumento Dockerfile> <ruta a Dockerfile>

Dónde Argumento Dockerfile: Corresponde a un elemento de tipo ARG del Dockerfile. La pareja --build-arg <argumento> puede especificarse tantas veces cómo parámetros haya.

Ejemplo:

sudo docker image build -t "custom/image:1.0.0" --build-arg jar_file="dist/main.jar" .

Inspeccionar la definición de una imagen

Este comando permitirá inspeccionar la definición de una imagen contenida en el registro local, esto es, su Dockerfile.

docker image inspect <IMAGE ID>

Dónde el IMAGE ID es el identificador retornado por el comando para el Listado de imágenes locales

Operaciones con contenedores

Listar contenedores

# Listado de los contenedores en funcionamiento
sudo docker container ls
sudo docker ps

# Listado de todos los contenedores independientemente de su estado
sudo docker container ls --all

Proporciona información de los contenedores creados en el entorno local que incluye:

  • CONTAINER_ID: ID del contenedor. Puede utilizarse para referenciar el contenedor en otros comandos
  • IMAGE: Referencia a la imagen sobre la que se ha creado el contenedor
  • COMMAND: Hint del comando que ejecuta el contenedor
  • CREATED: Fecha relativa a la creación del contenedor
  • STATUS: Estado actual del contenedor. Indica si se encuantra en funcionamiento, parado, con errores, etc.
  • PORTS: Puertos expuestos por el contenedor y su correspondencia con el puerto del host
  • NAMES: Nombre asignado al contenedor. Puede utilizarse en lugar del CONTAINER_ID para referenciar el contenedor en otros comandos

Crear un contenedor

# En 1 paso
sudo docker run -v <mapeo volumes> -p <mapeo puerto> --name <nombre container> <nombre imagen>

# En 2 pasos
sudo docker container create -v <mapeo volumes> -p <mapeo puerto> --name <nombre container> <nombre imagen> 
sudo docker container start <container_name or container_id>

Dónde el nombre o id del contenedor son valores retornados por el comando para el Listado de contenedores

Ejemplo:

# En 1 paso
sudo docker run -v /home/vagrant/prometheus/conf:/etc/prometheus -p 9090:9090 prom/prometheus:v2.17.2

# En 2 pasos
sudo docker container create -v /home/vagrant/prometheus/conf:/etc/prometheus -p 9090:9090 --name prometheus prom/prometheus:v2.17.2    
sudo docker container start prometheus

Borrar contenedor

sudo docker rm <nombre o id contenedor>

Dónde el nombre o id del contenedor son valores retornados por el comando para el Listado de contenedores

Modificar la configuración de un contenedor

Modificar política de reinicio

sudo docker container update --restart <policy> <nombre o id contenedor>

Dónde:

  • nombre o id del contenedor son valores retornados por el comando para el Listado de contenedores
  • policy: Indica la política de reinicio y puede tomar los valores
    • no: (Default) No reicniar el contenedor automáticamente
    • on-failure: Reiniciar el contenedor si anteriormente finalizado con error (Devuelve un código != 0)
    • always: Reiniciar el contendor siempre. Si el contenedor se ha parado manualmente, se reiniciará sólo cuando el daemon de Docker se reinicie (Reinicio del sistema o reinicio manual del daemon)
    • unless-stopped: Similar a always excepto que no se reinicia cuando el contenedor ha sido parado manualmente

Listar Stats de un contenedores en funcionamiento

Proporciona información sobre el consumo de recursos de los contenedores en funcionamiento

sudo docker stats

Parar un contenedor en funcionamiento

sudo docker stop <nombre o id contenedor>

Dónde el nombre o id del contenedor son valores retornados por el comando para el Listado de contenedores

Ejecutar un comando en un contenedor

NOTA: El comando debe estar disponible dentro del contenedor

sudo docker exec -t <nombre o id contenedor> <comando>

Dónde el nombre o id del contenedor son valores retornados por el comando para el Listado de contenedores

Por ejemplo, para listar el contenido de un fichero ubicado dentro de contenedor:

sudo docker exec -t grafana_loki_1 cat /etc/loki/local-config.yaml

Borrado total de contenedores e imágenes

Esta instrucción permite realizar realizar una limpieza general de la sesión por si se desean descargar nuevas imágenes o eliminar posibles errores que se estén produciendo localmente.

Para ejecutar la limpieza general en una ventada de terminal se debe escribir la instrucción:

sudo docker system prune -af

una vez finalizada su ejecución si no ha habido ningún problema habrá eliminado todo imagen o contenedor existente. Se puede verificar que no existe ninguno mediante el listado de imágenes o la consulta de los contenedores. Es importante indicar que esta instrucción se ejecutará siempre siendo totalmente indiferente si los contenedores se encuentran parados o arrancados.

Ejecutar shell en un contenedor

sudo docker exec -it <nombre o id contenedor> /bin/sh

Dónde el nombre o id del contenedor son valores retornados por el comando para el Listado de contenedores

Ejecución de servicios con Docker-Compose