docker scout environment 명령을 사용하여 환경 관리 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker scout environment 명령을 사용하여 다양한 Docker 환경을 관리하는 방법을 배우게 됩니다. 먼저 기존 환경을 나열하여 시스템에서 사용 가능한 컨텍스트를 이해하는 것으로 시작합니다.

다음으로, 특정 환경과 관련된 Docker 이미지를 나열하는 방법을 탐구하여 해당 컨텍스트 내에서 사용 가능한 이미지를 확인할 수 있습니다. 마지막으로, 특정 플랫폼에 대한 특정 이미지를 환경에 기록하는 방법을 배우게 됩니다. 이를 통해 더 나은 구성 및 관리를 위해 이미지를 서로 다른 환경과 연결하는 방법을 보여줍니다.

기존 환경 나열

이 단계에서는 시스템에 있는 기존 Docker 환경을 나열하는 방법을 배우겠습니다. Docker 환경을 사용하면 서로 다른 Docker 설치 또는 컨텍스트를 관리할 수 있습니다. 기본적으로 default 환경이 있습니다.

기존 Docker 환경을 나열하려면 docker context ls 명령을 사용할 수 있습니다. 이 명령은 이름, 설명, Docker 엔드포인트 및 현재 활성 환경인지 여부를 포함하여 각 환경에 대한 정보가 있는 테이블을 표시합니다.

사용 가능한 환경을 확인하기 위해 명령을 실행해 보겠습니다. ~/project 디렉토리에서 터미널을 엽니다.

docker context ls

다음과 유사한 출력이 표시됩니다.

NAME        DESCRIPTION                               DOCKER ENDPOINT                  KUBERNETES ENDPOINT   ORCHESTRATOR
default *   Current DOCKER_HOST environment           unix:///var/run/docker.sock      n/a                   swarm

이 출력에서 NAME은 환경의 이름이고, DESCRIPTION은 간략한 설명을 제공하며, DOCKER ENDPOINT는 Docker 가 사용하고 있는 엔드포인트 (이 경우 기본 Unix 소켓) 를 보여주고, KUBERNETES ENDPOINT는 Kubernetes 통합용이며 (여기서는 n/a), ORCHESTRATOR는 사용 중인 오케스트레이터를 나타냅니다 (이 경우 swarm). default 옆의 별표 (*) 는 현재 활성 환경임을 나타냅니다.

환경을 나열하는 방법을 이해하는 것은 원격 Docker 데몬 또는 클라우드 제공업체로 작업할 때 유용할 수 있는 서로 다른 Docker 컨텍스트를 관리하는 첫 번째 단계입니다.

특정 환경과 관련된 이미지 나열

이 단계에서는 특정 환경 내에서 사용 가능한 Docker 이미지를 나열하는 방법을 배우겠습니다. Docker 이미지는 컨테이너의 구성 요소로, 애플리케이션 코드, 라이브러리 및 종속성을 포함합니다.

현재 활성 환경 (이전 단계에서 확인한 default) 의 이미지를 나열하려면 docker images 명령을 사용할 수 있습니다. 이 명령은 리포지토리, 태그, 이미지 ID, 생성 시간 및 크기와 함께 이미지 목록을 표시합니다.

이미지를 나열하기 전에 목록에서 볼 수 있는 항목이 있도록 샘플 이미지를 가져오겠습니다. Docker 설치를 테스트하는 데 사용되는 매우 작은 이미지인 hello-world 이미지를 가져오겠습니다.

docker pull hello-world

이미지가 가져와 다운로드되고 있음을 나타내는 출력이 표시됩니다.

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

이제 이미지가 있으므로 docker images 명령을 사용하여 default 환경의 이미지를 나열해 보겠습니다.

docker images

방금 가져온 hello-world 이미지를 포함하여 다음과 유사한 출력이 표시됩니다.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    ...            ... ago      ...kB

출력은 hello-world 이미지를 latest 태그, 고유한 IMAGE ID, 생성된 시기 (CREATED), 그리고 SIZE와 함께 보여줍니다.

이미지 나열은 Docker 의 기본적인 작업으로, 컨테이너를 생성하기 위해 로컬에서 어떤 이미지를 사용할 수 있는지 확인할 수 있습니다.

특정 플랫폼용 환경에 이미지 기록

이 단계에서는 Docker 가 서로 다른 플랫폼에 대한 이미지를 처리하는 방법과 상호 작용하는 방법을 살펴보겠습니다. 하지만 특정 플랫폼에 대한 이미지를 환경에 명시적으로 "기록"하는 것은 생각하는 방식의 표준 Docker 명령이 아닙니다. Docker 이미지는 종종 다중 아키텍처 (multi-architecture) 를 가지며, 이는 단일 이미지 태그가 서로 다른 CPU 아키텍처 (예: amd64, arm64 등) 에 대한 변형을 포함할 수 있음을 의미합니다. 이미지를 가져올 때 Docker 는 시스템 아키텍처에 맞는 올바른 변형을 자동으로 선택합니다.

특정 플랫폼에 대한 이미지를 환경에 "기록"하는 개념은 올바른 이미지 변형이 사용 가능하거나 사용되도록 하는 것과 더 관련이 있습니다. 명시적으로 "기록"하지는 않지만, 대상 플랫폼을 지정하여 이미지를 가져올 수 있습니다.

특정 플랫폼에 대한 이미지를 가져오는 것을 시연해 보겠습니다. 가벼운 Linux 배포판인 alpine 이미지를 가져와 arm64 플랫폼을 지정합니다. LabEx VM 이 amd64일 가능성이 높지만, Docker 는 다른 아키텍처에 대한 이미지를 가져와 저장할 수 있습니다.

먼저, 플랫폼을 지정하지 않고 alpine 이미지를 가져와 기본 동작을 확인해 보겠습니다.

docker pull alpine

이미지가 가져와지고 있음을 나타내는 출력이 표시됩니다.

Using default tag: latest
latest: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

이제 이미지를 다시 나열하여 alpine 이미지를 확인해 보겠습니다.

docker images

목록에 alpine이 표시됩니다.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    ...            ... ago      ...kB
alpine        latest    ...            ... ago      ...MB

이제 --platform 플래그를 사용하여 arm64 플랫폼용으로 alpine 이미지를 가져와 보겠습니다.

docker pull --platform arm64 alpine

arm64 변형이 가져와지고 있음을 나타내는 출력이 표시됩니다.

Using default tag: latest
latest: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

출력이 비슷해 보일 수 있지만, Docker 는 arm64 변형을 가져왔습니다. arm64 머신에 있었다면 이것이 기본값일 것입니다. amd64 머신에서는 이제 alpine:latest 이미지의 amd64(기본 가져오기) 및 arm64 변형을 모두 로컬에 저장하게 됩니다.

docker images는 기본적으로 나열된 각 이미지 변형의 플랫폼을 명시적으로 표시하지 않지만, Docker 는 내부적으로 이를 관리합니다. 컨테이너를 실행하면 Docker 는 호스트의 아키텍처에 적합한 이미지 변형을 사용합니다.

이 단계에서는 Docker 가 다중 아키텍처 이미지를 처리하는 방법과 --platform 플래그를 사용하여 다른 플랫폼에 대한 이미지를 명시적으로 가져오는 방법을 보여줍니다.

요약

이 랩에서는 docker scout environment 명령을 사용하여 Docker 환경을 관리하는 방법을 배웠습니다. 먼저 docker context ls를 사용하여 시스템에 있는 기존 Docker 환경을 나열하는 것으로 시작했습니다. 이를 통해 기본 환경과 해당 세부 정보를 확인할 수 있었습니다.

다음으로, docker images 명령을 사용하여 특정 환경과 관련된 Docker 이미지를 나열하는 방법을 살펴보았습니다. 마지막으로, 특정 플랫폼에 대한 이미지를 환경에 기록하는 방법을 배웠지만, 이에 대한 자세한 단계는 제공된 내용에서 완전히 제공되지 않았습니다.