Trucos Técnicos de Docker
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...)