Cómo usar el comando de información del sistema de Docker para mostrar información del sistema

DockerBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá cómo utilizar el comando docker info para mostrar información integral sobre su sistema Docker. Comenzará ejecutando el comando básico docker info para ver detalles sobre el demonio de Docker, incluyendo la cantidad de contenedores e imágenes, el controlador de almacenamiento y otra información a nivel de sistema.

Después de la visualización básica, explorará cómo formatear la salida del comando docker info de diferentes maneras. En concreto, aprenderá cómo formatear la salida como JSON para facilitar el análisis y cómo utilizar una plantilla personalizada para mostrar solo la información específica que necesita. Este laboratorio le proporcionará las habilidades necesarias para recuperar e interpretar eficazmente la información del sistema Docker.

Mostrar información básica del sistema de Docker

En este paso, aprenderá cómo mostrar información básica sobre su sistema Docker utilizando el comando docker info. Este comando proporciona detalles sobre el demonio de Docker, incluyendo el número de contenedores e imágenes, el controlador de almacenamiento y otra información a nivel de sistema.

Abra la terminal en el entorno LabEx. Puede ejecutar el comando docker info directamente.

docker info

Debería ver una salida similar a esta (los detalles exactos variarán según su entorno):

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version: v0.10.4
    Build: 8842a472b58241d32996951f172f32259cd758e5
  compose: Docker Compose (Docker Inc.)
    Version: v2.17.2
    Build: 6833407
  scan: Docker Scan (Docker Inc.)
    Version: v0.23.0
    Build: 2c50987

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 20.10.21
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 9ba4b2555a59f71c4c1c1897e93a540b0c52b883
 runc version: v1.1.4-0-g5fd4c4d
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: default
  cgroupns
 Kernel Version: 5.15.0-76-generic
 Operating System: Ubuntu 22.04.2 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 3.84GiB
 Name: labex-vm
 ID: 6111111111111111111111111111111111111111111111111111111111111111
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: No blkio weight, cpus, or mem limits set, Docker may behave unexpectedly without them.

La salida proporciona una visión general completa de su instalación de Docker y su estado actual. Puede ver información como la versión de Docker, el número de contenedores e imágenes en ejecución, el controlador de almacenamiento en uso y detalles sobre el sistema operativo y el hardware subyacentes.

Formatear la salida de docker info como JSON

En el paso anterior, vio la salida predeterminada del comando docker info. Esta salida es legible por humanos, pero puede ser difícil de analizar mediante programación. Docker proporciona la bandera --format para personalizar el formato de salida. En este paso, aprenderá cómo formatear la salida de docker info como JSON.

La bandera --format utiliza el paquete text/template de Go. Para mostrar la información como JSON, puede utilizar la plantilla . | json.

Ejecute el siguiente comando en su terminal:

docker info --format '{{json .}}'

Debería ver la misma información que antes, pero ahora formateada como un solo objeto JSON:

{
  "Client": {
    "Context": "default",
    "DebugMode": false,
    "Plugins": {
      "buildx": {
        "Version": "v0.10.4",
        "Build": "8842a472b58241d32996951f172f32259cd758e5"
      },
      "compose": {
        "Version": "v2.17.2",
        "Build": "6833407"
      },
      "scan": {
        "Version": "v0.23.0",
        "Build": "2c50987"
      }
    }
  },
  "Server": {
    "Containers": 0,
    "ContainersRunning": 0,
    "ContainersPaused": 0,
    "ContainersStopped": 0,
    "Images": 0,
    "ServerVersion": "20.10.21",
    "StorageDriver": "overlay2",
    "LoggingDriver": "json-file",
    "CgroupDriver": "systemd",
    "CgroupVersion": "2",
    "Plugins": {
      "Volume": ["local"],
      "Network": ["bridge", "host", "ipvlan", "macvlan", "null", "overlay"],
      "Log": [
        "awslogs",
        "fluentd",
        "gcplogs",
        "gelf",
        "journald",
        "json-file",
        "local",
        "logentries",
        "splunk",
        "syslog"
      ]
    },
    "Swarm": {
      "NodeID": "",
      "LocalNodeState": "inactive",
      "ControlAvailable": false,
      "Error": null,
      "RemoteManagers": null
    },
    "Runtimes": {
      "io.containerd.runc.v2": {
        "path": "io.containerd.runc.v2"
      },
      "io.containerd.runtime.v1.linux": {
        "path": "io.containerd.runtime.v1.linux"
      },
      "runc": {
        "path": "runc"
      }
    },
    "DefaultRuntime": "runc",
    "InitBinary": "docker-init",
    "ContainerdVersion": "9ba4b2555a59f71c4c1c1897e93a540b0c52b883",
    "RuncVersion": "v1.1.4-0-g5fd4c4d",
    "InitVersion": "de40ad0",
    "SecurityOptions": ["apparmor", "seccomp", "cgroupns"],
    "KernelVersion": "5.15.0-76-generic",
    "OperatingSystem": "Ubuntu 22.04.2 LTS",
    "OSType": "linux",
    "Architecture": "x86_64",
    "NCPU": 2,
    "MemTotal": 4123631616,
    "Name": "labex-vm",
    "ID": "6111111111111111111111111111111111111111111111111111111111111111",
    "DockerRootDir": "/var/lib/docker",
    "DebugMode": false,
    "ExperimentalBuild": false,
    "InsecureRegistries": ["127.0.0.0/8"],
    "LiveRestoreEnabled": false,
    "Warnings": [
      "No blkio weight, cpus, or mem limits set, Docker may behave unexpectedly without them."
    ]
  }
}

Formatear la salida como JSON es útil cuando desea procesar la información con otras herramientas o scripts.

Formatear la salida de docker info usando una plantilla personalizada

Además de formatear la salida como JSON, puede utilizar la bandera --format con una plantilla personalizada de Go para mostrar información específica de la salida de docker info. Esto le permite extraer solo los datos que le interesan.

El comando docker info proporciona una estructura de datos a la que puede acceder dentro de la plantilla. Por ejemplo, para mostrar la versión del servidor de Docker y el número total de CPU, puede utilizar la plantilla 'Server Version: {{.ServerVersion}}, CPUs: {{.NCPU}}'.

Ejecute el siguiente comando en su terminal:

docker info --format 'Server Version: {{.ServerVersion}}, CPUs: {{.NCPU}}'

Debería ver una salida similar a esta:

Server Version: 20.10.21, CPUs: 2

En esta plantilla:

  • {{.ServerVersion}} accede al campo ServerVersion de la estructura de datos de docker info.
  • {{.NCPU}} accede al campo NCPU, que representa el número de CPU.

Puede explorar la salida JSON del paso anterior para identificar otros campos que desee incluir en su plantilla personalizada. Por ejemplo, para mostrar el sistema operativo y el directorio raíz de Docker, podría utilizar la plantilla 'OS: {{.OperatingSystem}}, Docker Root Dir: {{.DockerRootDir}}'.

Intente ejecutar este comando:

docker info --format 'OS: {{.OperatingSystem}}, Docker Root Dir: {{.DockerRootDir}}'

Debería ver una salida similar a esta:

OS: Ubuntu 22.04.2 LTS, Docker Root Dir: /var/lib/docker

Utilizar plantillas personalizadas le da un control detallado sobre la salida del comando docker info, lo que facilita la integración de la información de Docker en scripts o informes.

Resumen

En este laboratorio, aprendiste cómo usar el comando docker info para mostrar información integral sobre tu sistema Docker. Comenzaste ejecutando el comando básico docker info para ver detalles sobre el demonio de Docker, incluyendo la cantidad de contenedores e imágenes, el controlador de almacenamiento y otra información a nivel de sistema.

Además, exploraste cómo formatear la salida del comando docker info. Aprendiste a mostrar la información en formato JSON para facilitar el análisis y la integración con otras herramientas, y también cómo usar una plantilla personalizada de Go para mostrar información específica en un formato adaptado. Estas opciones de formato brindan flexibilidad en cómo accedes y utilizas los detalles del sistema Docker.