Como usar o comando docker system info para exibir informações do sistema

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker info para exibir informações abrangentes sobre o seu sistema Docker. Você começará executando o comando básico docker info para visualizar detalhes sobre o daemon Docker, incluindo contagens de contêineres e imagens, o driver de armazenamento e outras informações de nível de sistema.

Após a exibição básica, você explorará como formatar a saída do comando docker info de diferentes maneiras. Especificamente, você aprenderá como formatar a saída como JSON para facilitar a análise e como usar um template personalizado para exibir apenas as informações específicas que você precisa. Este laboratório irá equipá-lo com as habilidades para recuperar e interpretar efetivamente as informações do sistema Docker.

Exibir informações básicas do sistema Docker

Nesta etapa, você aprenderá como exibir informações básicas sobre o seu sistema Docker usando o comando docker info. Este comando fornece detalhes sobre o daemon Docker, incluindo o número de contêineres e imagens, o driver de armazenamento e outras informações de nível de sistema.

Abra o terminal no ambiente LabEx. Você pode executar o comando docker info diretamente.

docker info

Você deve ver uma saída semelhante a esta (os detalhes exatos variarão dependendo do seu ambiente):

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.

A saída fornece uma visão geral abrangente da sua instalação Docker e seu estado atual. Você pode ver informações como a versão do Docker, o número de contêineres e imagens em execução, o driver de armazenamento sendo usado e detalhes sobre o sistema operacional e hardware subjacentes.

Formatar a saída do docker info como JSON

Na etapa anterior, você viu a saída padrão do comando docker info. Essa saída é legível por humanos, mas pode ser difícil de analisar programaticamente. O Docker fornece a flag --format para personalizar o formato da saída. Nesta etapa, você aprenderá como formatar a saída do docker info como JSON.

A flag --format usa o pacote text/template do Go. Para gerar a informação como JSON, você pode usar o template . | json.

Execute o seguinte comando no seu terminal:

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

Você deve ver as mesmas informações de antes, mas agora formatadas como um único 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."
    ]
  }
}

Formatar a saída como JSON é útil quando você deseja processar as informações com outras ferramentas ou scripts.

Formatar a saída do docker info usando um template personalizado

Além de formatar a saída como JSON, você pode usar a flag --format com um template Go personalizado para exibir informações específicas da saída do docker info. Isso permite que você extraia apenas os dados que lhe interessam.

O comando docker info fornece uma estrutura de dados que você pode acessar dentro do template. Por exemplo, para exibir a Versão do Servidor Docker e o número total de CPUs, você pode usar o template 'Server Version: {{.ServerVersion}}, CPUs: {{.NCPU}}'.

Execute o seguinte comando no seu terminal:

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

Você deve ver uma saída semelhante a esta:

Server Version: 20.10.21, CPUs: 2

Neste template:

  • {{.ServerVersion}} acessa o campo ServerVersion da estrutura de dados do docker info.
  • {{.NCPU}} acessa o campo NCPU, que representa o número de CPUs.

Você pode explorar a saída JSON da etapa anterior para identificar outros campos que você pode querer incluir em seu template personalizado. Por exemplo, para exibir o Sistema Operacional e o Diretório Raiz do Docker, você pode usar o template 'OS: {{.OperatingSystem}}, Docker Root Dir: {{.DockerRootDir}}'.

Tente executar este comando:

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

Você deve ver uma saída semelhante a esta:

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

Usar templates personalizados oferece controle preciso sobre a saída do comando docker info, tornando mais fácil integrar informações do Docker em scripts ou relatórios.

Resumo

Neste laboratório, você aprendeu como usar o comando docker info para exibir informações abrangentes sobre o seu sistema Docker. Você começou executando o comando básico docker info para visualizar detalhes sobre o daemon Docker, incluindo contagens de contêineres e imagens, o driver de armazenamento e outras informações de nível de sistema.

Além disso, você explorou como formatar a saída do comando docker info. Você aprendeu a exibir as informações em formato JSON para facilitar a análise e a integração com outras ferramentas, e também como usar um template Go personalizado para exibir informações específicas em um formato personalizado. Essas opções de formatação oferecem flexibilidade na forma como você acessa e utiliza os detalhes do sistema Docker.