소개
이 랩에서는 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 시스템 세부 정보에 액세스하고 활용하는 방법에 대한 유연성을 제공합니다.



