소개
이 랩에서는 docker context inspect 명령을 사용하여 Docker 컨텍스트에 대한 자세한 정보를 확인하는 방법을 살펴봅니다. Docker 컨텍스트는 서로 다른 Docker 데몬에 대한 연결을 관리하는 데 필수적입니다. 먼저 로컬 데몬에 연결되는 기본 Docker 컨텍스트를 검사하는 것으로 시작합니다.
그 후, 데모 목적으로 새로운 컨텍스트를 생성한 다음, docker context inspect를 사용하여 이름별로 세부 정보를 검사합니다. 마지막으로, 컨텍스트에 대한 특정 정보를 추출하기 위해 inspect 명령의 출력을 JSON 형식으로 지정하고 Go 템플릿을 사용하는 등 다양한 방식으로 서식을 지정하는 방법을 배웁니다.
기본 Docker 컨텍스트 검사
이 단계에서는 기본 Docker 컨텍스트를 살펴봅니다. Docker 컨텍스트는 서로 다른 Docker 데몬에 대한 연결을 관리하는 방법입니다. 기본적으로 Docker 는 로컬 Docker 데몬에 연결되는 default라는 컨텍스트를 사용합니다.
기본 Docker 컨텍스트를 검사하려면 docker context inspect 명령을 사용하고 컨텍스트 이름을 입력합니다.
docker context inspect default
이 명령은 default 컨텍스트에 대한 자세한 정보를 출력하며, 여기에는 엔드포인트, 유형 및 기타 구성 세부 정보가 포함됩니다. 출력은 JSON 형식입니다.
[
{
"Name": "default",
"Current": true,
"Endpoint": {
"Docker": {
"Host": "unix:///var/run/docker.sock"
}
},
"Metadata": {},
"Storage": "meta/contexts/default"
}
]
출력은 default 컨텍스트가 현재 컨텍스트 ("Current": true) 이고 해당 엔드포인트가 unix:///var/run/docker.sock으로 설정되어 있음을 보여줍니다. 이는 Linux 시스템에서 Docker 데몬의 기본 Unix 소켓입니다.
데모용 새 컨텍스트 생성
이 단계에서는 새로운 Docker 컨텍스트를 생성합니다. 새로운 컨텍스트를 생성하면 원격 머신 또는 동일한 머신의 다른 구성에 있는 다른 Docker 데몬에 대한 연결을 정의할 수 있습니다. 이 데모에서는 로컬 Docker 데몬을 가리키지만 다른 이름을 가진 컨텍스트를 생성합니다.
새로운 컨텍스트를 생성하려면 docker context create 명령을 사용하고 새 컨텍스트의 이름과 엔드포인트 정보를 입력합니다. 로컬 데몬에 연결하므로 엔드포인트는 기본 컨텍스트와 동일합니다: unix:///var/run/docker.sock.
my-context라는 새 컨텍스트를 생성해 보겠습니다.
docker context create my-context --docker "host=unix:///var/run/docker.sock"
이 명령을 실행한 후 컨텍스트가 생성되었음을 나타내는 출력을 볼 수 있습니다.
my-context
이는 my-context라는 새 컨텍스트가 로컬 Docker 데몬을 가리키며 성공적으로 생성되었음을 확인합니다.
이름으로 새로 생성된 컨텍스트 검사
이전 단계에서 my-context라는 새로운 Docker 컨텍스트를 생성했습니다. 이제 이 새로 생성된 컨텍스트를 검사하여 세부 정보를 확인해 보겠습니다. 기본 컨텍스트를 검사하는 것과 유사하게 docker context inspect 명령을 사용하지만, 이번에는 새 컨텍스트의 이름을 지정합니다.
docker context inspect my-context
이 명령은 방금 생성한 my-context에 대한 구성 세부 정보를 표시합니다. 출력은 다시 JSON 형식입니다.
[
{
"Name": "my-context",
"Current": false,
"Endpoint": {
"Docker": {
"Host": "unix:///var/run/docker.sock"
}
},
"Metadata": {},
"Storage": "meta/contexts/my-context"
}
]
my-context에 대한 출력은 로컬 Docker 데몬을 모두 가리키므로 default 컨텍스트와 유사합니다. 그러나 my-context의 "Current" 필드는 false로, 현재 활성 컨텍스트가 아님을 나타냅니다. default 컨텍스트가 여전히 활성 컨텍스트입니다.
컨텍스트 검사 및 JSON 형식으로 출력
이 단계에서는 docker context inspect 명령의 출력을 명시적으로 JSON 형식으로 요청합니다. 기본 출력은 이미 JSON 형식이지만, --format json 플래그를 사용하는 것은 특히 출력을 다른 도구로 파이핑하여 처리하는 경우와 같이 JSON 출력이 필요한 경우 좋은 방법입니다.
이전 단계에서 생성한 my-context를 검사하고 출력을 JSON 형식으로 지정합니다.
docker context inspect my-context --format json
이 명령은 이전 단계와 동일한 JSON 출력을 생성하지만, --format 플래그를 사용하여 출력 형식을 지정하는 방법을 명시적으로 보여줍니다.
[
{
"Name": "my-context",
"Current": false,
"Endpoint": {
"Docker": {
"Host": "unix:///var/run/docker.sock"
}
},
"Metadata": {},
"Storage": "meta/contexts/my-context"
}
]
--format json 플래그를 사용하는 것은 Docker 명령의 출력을 프로그래밍 방식으로 구문 분석하려는 경우 특히 유용합니다.
Go 템플릿을 사용하여 컨텍스트 검사 및 출력 형식 지정
이 마지막 단계에서는 Go 템플릿을 사용하여 docker context inspect의 출력을 형식 지정하는 방법을 살펴봅니다. 이는 JSON 출력에서 특정 정보를 추출하여 사용자 지정 형식으로 표시할 수 있는 강력한 기능입니다.
my-context를 검사하고 Go 템플릿을 사용하여 컨텍스트 이름과 Docker 호스트 엔드포인트만 표시합니다. 템플릿 구문은 이중 중괄호 {{ }}를 사용하여 표현식을 묶습니다. 점 표기법을 사용하여 JSON 출력 내의 필드에 액세스할 수 있습니다. 예를 들어, 컨텍스트 이름에는 .Name을 사용하고 Docker 호스트 엔드포인트에는 .Endpoint.Docker.Host를 사용합니다.
docker context inspect my-context --format '{{.Name}}: {{.Endpoint.Docker.Host}}'
이 명령은 제공된 Go 템플릿을 사용하여 출력을 형식 지정합니다. 컨텍스트 이름과 그 뒤에 Docker 호스트 엔드포인트가 표시됩니다.
my-context: unix:///var/run/docker.sock
이는 Go 템플릿을 사용하여 Docker 명령의 출력을 사용자 지정하여 특정 데이터를 쉽게 추출하고 처리할 수 있는 방법을 보여줍니다.
요약
이 단계에서는 docker context inspect 명령을 사용하여 Docker 컨텍스트에 대한 세부 정보를 확인하는 방법을 배웠습니다. 로컬 Docker 데몬에 연결되는 기본 컨텍스트를 검사하는 것으로 시작했습니다. 그런 다음, 데모 목적으로 로컬 데몬을 가리키는 my-context라는 새 컨텍스트를 생성했습니다.
이어서, 새로 생성된 컨텍스트를 이름으로 검사하여 docker context inspect 명령을 더 자세히 살펴보았습니다. 마지막으로, inspect 명령의 출력을 JSON 형식으로, 그리고 Go 템플릿을 사용하여 다양한 방식으로 형식 지정하여 컨텍스트에 대한 특정 정보를 추출하고 표시하는 방법을 시연했습니다.



