docker system info 명령으로 시스템 정보 표시 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker info 명령을 사용하여 Docker 시스템에 대한 포괄적인 정보를 표시하는 방법을 배우게 됩니다. 먼저 기본 docker info 명령을 실행하여 컨테이너 및 이미지 수, 스토리지 드라이버 및 기타 시스템 수준 정보를 포함한 Docker 데몬에 대한 세부 정보를 확인합니다.

기본 표시를 수행한 후에는 docker info 명령의 출력을 다양한 방식으로 형식화하는 방법을 살펴보겠습니다. 특히, 더 쉽게 구문 분석할 수 있도록 출력을 JSON 형식으로 지정하고, 필요한 특정 정보만 표시하도록 사용자 지정 템플릿을 사용하는 방법을 배우게 됩니다. 이 랩을 통해 Docker 시스템 정보를 효과적으로 검색하고 해석하는 기술을 습득할 수 있습니다.

기본 Docker 시스템 정보 표시

이 단계에서는 docker info 명령을 사용하여 Docker 시스템에 대한 기본 정보를 표시하는 방법을 배우게 됩니다. 이 명령은 컨테이너 및 이미지 수, 스토리지 드라이버 및 기타 시스템 수준 정보를 포함하여 Docker 데몬에 대한 세부 정보를 제공합니다.

LabEx 환경에서 터미널을 엽니다. docker info 명령을 직접 실행할 수 있습니다.

docker info

다음과 유사한 출력을 볼 수 있습니다 (정확한 세부 정보는 환경에 따라 다릅니다).

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.

출력은 Docker 설치 및 현재 상태에 대한 포괄적인 개요를 제공합니다. Docker 버전, 실행 중인 컨테이너 및 이미지 수, 사용 중인 스토리지 드라이버, 기본 운영 체제 및 하드웨어에 대한 세부 정보와 같은 정보를 확인할 수 있습니다.

docker info 출력 JSON 형식으로 변환

이전 단계에서 docker info 명령의 기본 출력을 확인했습니다. 이 출력은 사람이 읽을 수 있지만 프로그래밍 방식으로 구문 분석하기 어려울 수 있습니다. Docker 는 출력 형식을 사용자 정의하기 위해 --format 플래그를 제공합니다. 이 단계에서는 docker info 출력을 JSON 형식으로 지정하는 방법을 배우게 됩니다.

--format 플래그는 Go 의 text/template 패키지를 사용합니다. 정보를 JSON 으로 출력하려면 . | json 템플릿을 사용할 수 있습니다.

터미널에서 다음 명령을 실행합니다.

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

이전과 동일한 정보를 볼 수 있지만 이제 단일 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."
    ]
  }
}

출력을 JSON 으로 형식화하는 것은 다른 도구나 스크립트로 정보를 처리하려는 경우 유용합니다.

사용자 정의 템플릿을 사용하여 docker info 출력 형식 지정

JSON 으로 출력을 형식화하는 것 외에도, --format 플래그를 사용자 정의 Go 템플릿과 함께 사용하여 docker info 출력에서 특정 정보를 표시할 수 있습니다. 이를 통해 관심 있는 데이터만 추출할 수 있습니다.

docker info 명령은 템플릿 내에서 액세스할 수 있는 데이터 구조를 제공합니다. 예를 들어, Docker Server Version 과 총 CPU 수를 표시하려면 템플릿 'Server Version: {{.ServerVersion}}, CPUs: {{.NCPU}}'를 사용할 수 있습니다.

터미널에서 다음 명령을 실행합니다.

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

다음과 유사한 출력을 볼 수 있습니다.

Server Version: 20.10.21, CPUs: 2

이 템플릿에서:

  • {{.ServerVersion}}docker info 데이터 구조에서 ServerVersion 필드에 액세스합니다.
  • {{.NCPU}}는 CPU 수를 나타내는 NCPU 필드에 액세스합니다.

이전 단계의 JSON 출력을 탐색하여 사용자 정의 템플릿에 포함하려는 다른 필드를 식별할 수 있습니다. 예를 들어, 운영 체제 (Operating System) 와 Docker Root Directory 를 표시하려면 템플릿 'OS: {{.OperatingSystem}}, Docker Root Dir: {{.DockerRootDir}}'를 사용할 수 있습니다.

이 명령을 실행해 보십시오.

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

다음과 유사한 출력을 볼 수 있습니다.

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

사용자 정의 템플릿을 사용하면 docker info 명령의 출력에 대한 세밀한 제어가 가능하여 Docker 정보를 스크립트 또는 보고서에 더 쉽게 통합할 수 있습니다.

요약

이 랩에서는 docker info 명령을 사용하여 Docker 시스템에 대한 포괄적인 정보를 표시하는 방법을 배웠습니다. 먼저 기본 docker info 명령을 실행하여 컨테이너 및 이미지 수, 스토리지 드라이버 (storage driver) 및 기타 시스템 수준 정보를 포함한 Docker 데몬 (daemon) 에 대한 세부 정보를 확인했습니다.

또한 docker info 명령의 출력 형식을 지정하는 방법을 살펴보았습니다. 다른 도구와의 더 쉬운 구문 분석 및 통합을 위해 정보를 JSON 형식으로 출력하는 방법과, 맞춤형 형식으로 특정 정보를 표시하기 위해 사용자 정의 Go 템플릿을 사용하는 방법을 배웠습니다. 이러한 형식 지정 옵션은 Docker 시스템 세부 정보에 액세스하고 활용하는 방법에 대한 유연성을 제공합니다.