Trucos Técnicos de Docker

Table of contents

Ver la version de Docker

Ejecutemos el comando para listar la version the docker instalado localmente.

-> docker version
Client: Docker Engine - Community
 Version:           28.0.0
 API version:       1.48
 Go version:        go1.23.6
 Git commit:        f9ced58
 Built:             Wed Feb 19 22:10:30 2025
 OS/Arch:           linux/amd64
 Context:           default

Tambien se puede ver de esta manera.

-> docker --version
Docker version 28.0.0, build f9ced58bc

Listar Imagenes de Docker

El comando docker image ls lista las imagenes de docker presentes en el sistema.

Es posible que debas usar el comando sudo para ejectar las acciones descritas aqui.

-> docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    74cc54e27dc4   4 weeks ago   10.1kB

Definición de terminos basado el la informacíon arriba.

REPOSITORY
el repositorio de origen donde localizar la imagen
TAG
palabra alfanumérica identificando la imagen
IMAGE ID
suma de sha identificando la imagen internamente en el sistema
CREATED
fecha cuando la imagen fue creada
SIZE
tamaño de la imagen en megabytes

Obtener Detalles de una Imagen

Los contenedores y las imágenes se almacenan en el sistema de archivos local en /var/lib/docker. Para referencia ver este posteo de Stackoverflow.

Aquí vemos contenedores que se ejecutaron y ahora están detenidos. Docker utiliza los primeros 12 caracteres de la cadena que identifica al contenedor para proporcionar el ID del contenedor.

-> docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED       STATUS                   PORTS     NAMES
ea6a1e952b04   nginx:latest   "/docker-entrypoint.…"   4 days ago    Exited (0) 4 days ago              my-nginx
ebd8ac02d3d3   hello-world    "/hello"                 11 days ago   Exited (0) 11 days ago             awesome_clarke

Veamos un listado de /var/lib/docker.

-> ls -l /var/lib/docker
total 44
drwx--x--x 3 root root 4096 Feb 25 05:40 buildkit
drwx--x--- 4 root root 4096 Mar  4 05:28 containers
-rw------- 1 root root   36 Feb 25 05:40 engine-id
drwx------ 3 root root 4096 Feb 25 05:40 image
drwxr-x--- 3 root root 4096 Feb 25 05:40 network
drwx------ 3 root root 4096 Feb 25 05:40 plugins
drwx------ 2 root root 4096 Mar  4 05:02 runtimes
drwx------ 2 root root 4096 Feb 25 05:40 swarm
drwx------ 2 root root 4096 Mar  4 05:28 tmp
drwx--x--- 3 root root 4096 Mar  4 05:02 vfs
drwx-----x 2 root root 4096 Mar  4 05:02 volumeses

Aquí vemos los directorios que pertenecen a los contenedores que existen actualmente, ya sea que estén ejecutándose o no. Vemos que los primeros “12” caracteres coinciden con los ID de contenedor que proporcionan los comandos “docker ps”.

-> ls -l /var/lib/docker/containers
total 8
drwx--x--- 4 root root 4096 Mar  4 05:45 ea6a1e952b04e9f4b4af461a3b77c4bac826532aa6831b99d75e1a112f25999a
drwx--x--- 4 root root 4096 Mar  4 05:02 ebd8ac02d3d305f0b22132612cd83ed044e9b9348fde44cf0f2589978a22132a

Podemos hacer un chdir en ese directorio e inspeccionar los archivos utilizados para instanciar el contenedor. Por ejemplo:

  • hostname: el nombre del contenedor, equivalente al ID del contenedor
  • hosts: el contenido utilizado para completar el archivo /etc/hosts en el contenedor en ejecución
  • resolv.conf: el contenido del archivo /etc/resolv.conf utilizado para el solucionador DNS en el contenedor
-> cd ea6a1e952b04e9f4b4af461a3b77c4bac826532aa6831b99d75e1a112f25999a/

-> ls -l
total 40
drwx------ 2 root root 4096 Mar  4 05:28 checkpoints/
-rw------- 1 root root 2813 Mar  4 05:45 config.v2.json
-rw-r----- 1 root root 7383 Mar  4 05:45 ea6a1e952b04e9f4b4af461a3b77c4bac826532aa6831b99d75e1a112f25999a-json.log
-rw------- 1 root root 1503 Mar  4 05:45 hostconfig.json
-rw-r--r-- 1 root root   13 Mar  4 05:28 hostname
-rw-r--r-- 1 root root  148 Mar  4 05:45 hosts
drwx--x--- 2 root root 4096 Mar  4 05:28 mounts/
-rw-r--r-- 1 root root  306 Mar  4 05:28 resolv.conf
-rw-r--r-- 1 root root   71 Mar  4 05:28 resolv.conf.hash

-> cat hostname
ea6a1e952b04

-> cat hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::	ip6-localnet
ff00::	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters

-> cat resolv.conf
# Generated by Docker Engine.
# This file can be edited; Docker Engine will not make further changes once it
# has been modified.
nameserver 8.8.8.8
nameserver 8.8.4.4
options ndots:0
# Based on host file: '/etc/resolv.conf' (legacy)
# Used default nameservers.
# Overrides: []
# Option ndots from: host

También podemos usar el argumento de Docker inspect para verificar la configuración completa del contenedor. Esto muestra solo un fragmento de la configuración completa del contenedor.

Commando

-> docker inspect ea6a1e952b04

Salida del commando

[
    {
        "Id": "ea6a1e952b04e9f4b4af461a3b77c4bac826532aa6831b99d75e1a112f25999a",
        "Created": "2025-03-04T05:28:42.647302725Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
        ],
        "State": {
            "Status": "exited",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2025-03-04T05:28:43.828095167Z",
            "FinishedAt": "2025-03-04T05:45:08.440120339Z"
        },
(...snip...)        

Return to main page.