docker scout watch 명령을 사용하여 컨테이너 이미지 모니터링 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker scout watch 명령을 효과적으로 사용하여 컨테이너 이미지를 모니터링하는 방법을 배우게 됩니다. 특정 레포지토리 (repository) 의 새로운 이미지를 감시하는 것부터 시작하여 태그 (tag) 별로 필터링하여 모니터링을 세분화하는 다양한 시나리오를 탐구할 것입니다. 또한, 레지스트리 (registry) 내의 모든 레포지토리를 포함하도록 감시 범위를 확장하는 방법과 레포지토리의 모든 기존 이미지를 포함하는 감시를 시작하는 방법을 배우게 됩니다. 실습을 통해 Docker Scout 를 사용하여 이미지 모니터링을 설정하고 관리하는 실질적인 경험을 얻게 될 것입니다.

새로운 이미지를 위해 특정 레포지토리 감시

이 단계에서는 docker pull 명령을 사용하여 특정 Docker 레포지토리의 새로운 이미지를 감시하는 방법을 배우게 됩니다. 이는 Docker 의 기본적인 작업으로, 레지스트리에서 로컬 머신으로 이미지를 다운로드할 수 있게 해줍니다.

먼저, Docker Hub 레지스트리에서 특정 이미지를 가져와 보겠습니다. 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 에게 기본 레지스트리 (Docker Hub) 에서 latest 태그가 있는 hello-world 이미지를 다운로드하도록 지시합니다. 이미지가 로컬에 이미 존재하는 경우, Docker 는 최신 버전이 있는지 확인하고 필요한 경우 다운로드합니다.

다음으로, hello-world 이미지가 다운로드되었는지 확인하기 위해 로컬 머신에 있는 이미지를 나열해 보겠습니다.

docker images

출력에 hello-world가 나열된 것을 볼 수 있습니다.

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

이 명령은 로컬 머신에 저장된 모든 Docker 이미지의 목록을 표시하며, 레포지토리, 태그, 이미지 ID, 생성 날짜 및 크기를 포함합니다.

이제 동일한 이미지를 다시 가져와 보겠습니다. 이미 hello-worldlatest 버전을 가지고 있으므로 Docker 는 다시 다운로드하지 않습니다.

docker pull hello-world

출력은 이미지가 최신 상태임을 나타냅니다.

Using default tag: latest
latest: Pulling from library/hello-world
Status: Image is up to date for hello-world:latest
docker.io/library/hello-world:latest

이는 docker pull이 다운로드하기 전에 최신 버전을 확인하는 방법을 보여줍니다.

특정 레포지토리 감시 및 태그별 필터링

이 단계에서는 이미지를 가져올 때 특정 Docker 레포지토리를 감시하고 태그별로 필터링하는 방법을 배우게 됩니다. Docker 이미지는 종종 태그로 식별되는 다양한 버전 또는 변형을 갖습니다. 태그를 지정하면 특정 버전의 이미지를 가져올 수 있습니다.

이전 단계에서는 기본 latest 태그로 hello-world 이미지를 가져왔습니다. 이제 다른 이미지, 예를 들어 ubuntu 이미지를 가져와 특정 태그를 지정해 보겠습니다. Ubuntu 20.04 LTS 릴리스에 해당하는 20.04 태그를 가져오겠습니다.

docker pull ubuntu:20.04

지정된 Ubuntu 이미지 태그에 대한 다운로드 진행 상황을 나타내는 출력을 볼 수 있습니다.

20.04: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04

이 명령은 Docker 에게 20.04 태그가 있는 ubuntu 이미지를 다운로드하도록 지시합니다. 태그를 지정하지 않으면 Docker 는 기본적으로 latest를 사용합니다.

이제 새로 다운로드한 ubuntu:20.04 이미지를 확인하기 위해 로컬 이미지를 다시 나열해 보겠습니다.

docker images

이제 목록에 hello-world:latestubuntu:20.04가 모두 표시됩니다.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    ...            ...            ...
ubuntu        20.04     ...            ...            ...

이는 태그를 지정하여 ubuntu 이미지의 특정 버전을 성공적으로 가져왔음을 보여줍니다.

동일한 이미지의 다른 태그도 가져올 수 있습니다. 예를 들어, ubuntu 이미지의 18.04 태그를 가져와 보겠습니다.

docker pull ubuntu:18.04

다시 다운로드 진행 상황을 볼 수 있습니다.

18.04: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04

이미지를 다시 한 번 나열하면 가져온 세 개의 모든 이미지가 표시됩니다.

docker images

이제 출력에 ubuntu:18.04가 포함됩니다.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    ...            ...            ...
ubuntu        20.04     ...            ...            ...
ubuntu        18.04     ...            ...            ...

이는 로컬 머신에서 동일한 이미지의 다른 버전을 관리하기 위해 태그를 사용하는 방법을 보여줍니다.

레지스트리 내 모든 레포지토리 감시

이 단계에서는 Docker 레지스트리 내의 레포지토리를 나열하는 방법을 배우게 됩니다. docker pull은 개별 이미지에 사용되지만, Docker CLI 에서 직접 Docker Hub 와 같은 공용 레지스트리의 모든 레포지토리를 "감시"하거나 나열하는 단일 명령은 없습니다. 이는 레포지토리의 엄청난 수 때문입니다. 그러나 키워드를 기반으로 레포지토리를 검색할 수 있습니다.

docker search 명령을 사용하면 Docker Hub 레지스트리에서 이미지를 검색할 수 있습니다. "nginx"와 관련된 이미지를 검색해 보겠습니다.

docker search nginx

"nginx" 검색어와 일치하는 레포지토리 목록이 표시됩니다.

NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                              Official build of Nginx.                        16000     [OK]
...

출력은 각 일치하는 레포지토리에 대한 정보, 즉 이름, 설명, 별점 수, 공식 이미지인지 자동 빌드인지 여부를 제공합니다.

검색 결과를 필터링할 수도 있습니다. 예를 들어, "ubuntu"와 관련된 공식 이미지만 보려면 --filter 플래그를 사용할 수 있습니다.

docker search --filter is-official=true ubuntu

이 명령은 공식 Ubuntu 레포지토리만 표시합니다.

NAME      DESCRIPTION                STARS     OFFICIAL   AUTOMATED
ubuntu    Ubuntu is a Debian-based...   14000     [OK]

docker search모든 레포지토리를 나열하지는 않지만, Docker CLI 를 사용하여 레지스트리 내의 이미지를 검색하는 주요 방법입니다. Docker Hub 와 같은 대규모 공용 레지스트리의 포괄적인 레포지토리 목록을 얻으려면 일반적으로 레지스트리의 API 또는 웹 인터페이스를 사용해야 합니다.

이 랩의 목적상, 이미지를 검색하고 발견하는 방법을 이해하는 것이 "감시"하거나 이미지를 가져오려는 레포지토리를 찾는 데 중요합니다.

레포지토리 감시 및 기존 이미지 푸시

이 단계에서는 기존 이미지에 태그를 지정하고 Docker 레지스트리에 푸시하는 방법을 배우게 됩니다. 이미지를 푸시하면 사용자 지정 이미지 또는 기존 이미지의 수정된 버전을 다른 사용자와 공유하거나 원격 위치에 저장할 수 있습니다.

이미지를 푸시하기 전에 레지스트리 주소, 사용자 이름 및 레포지토리 이름으로 태그를 지정해야 합니다. 이전 단계에서 가져온 ubuntu:20.04 이미지를 사용하겠습니다. Docker Hub 에 푸시하도록 태그를 지정해 보겠습니다. your_docker_username을 실제 Docker Hub 사용자 이름으로 바꾸십시오.

docker tag ubuntu:20.04 your_docker_username/ubuntu:20.04

이 명령은 ubuntu:20.04 이미지에 대한 새 태그를 생성합니다. 새 태그는 your_docker_username/ubuntu:20.04입니다. 형식은 [registry]/[username]/[repository]:[tag]입니다. Docker Hub 에 푸시하는 경우 레지스트리 부분 (docker.io/) 을 생략할 수 있습니다.

이제 로컬 이미지를 다시 나열하여 새 태그를 확인합니다.

docker images

your_docker_username/ubuntu를 레포지토리로, 20.04를 태그로 하는 항목이 표시되어 원래 ubuntu:20.04 이미지와 동일한 이미지 ID 를 공유합니다.

REPOSITORY                     TAG       IMAGE ID       CREATED        SIZE
hello-world                    latest    ...            ...            ...
ubuntu                         20.04     ...            ...            ...
ubuntu                         18.04     ...            ...            ...
your_docker_username/ubuntu    20.04     ...            ...            ...

이제 이미지가 올바르게 태그 지정되었으므로 Docker Hub 레포지토리에 푸시할 수 있습니다. 참고: 이미지를 푸시하려면 Docker Hub 에 로그인해야 합니다. 로그인하지 않은 경우 docker push 명령이 실패합니다. 이 랩의 목적상, 명령을 시연하지만 Docker Hub 계정이 있고 로그인하지 않은 경우 이미지를 성공적으로 푸시할 필요는 없습니다.

docker push your_docker_username/ubuntu:20.04

로그인한 경우 레지스트리에 푸시되는 레이어를 나타내는 출력을 볼 수 있습니다. 로그인하지 않은 경우 인증 오류가 발생합니다.

The push refers to repository [docker.io/your_docker_username/ubuntu]
...

이 명령은 지정된 태그가 있는 이미지를 Docker Hub 의 레포지토리에 업로드합니다.

레포지토리를 "감시"하고 단일 명령으로 모든 기존 이미지를 자동으로 푸시할 수는 없지만, 푸시하려는 이미지에 대해 docker tagdocker push 명령을 스크립팅하여 이를 수행할 수 있습니다.

요약

이 랩에서는 레지스트리에서 컨테이너 이미지를 다운로드하는 기본적인 docker pull 명령을 배웠습니다. 특히 hello-world와 같은 특정 이미지를 가져오고 docker images를 사용하여 해당 이미지의 존재를 확인하는 방법을 시연했습니다. 또한 Docker 가 동일한 이미지에 대한 후속 pull 요청을 효율적으로 처리하여 새 버전이 사용 가능한 경우에만 다운로드하는 방식을 관찰했습니다.