인프런 커뮤니티 질문&답변

wldls0530님의 프로필 이미지
wldls0530

작성한 질문수

개발자를 위한 쉬운 도커

이미지 레지스트리 실습

docker push 중 경고

해결된 질문

작성

·

58

1

안녕하세요, 강의를 열심히 수강 중인 학생입니다.

 

(실습을 진행 중인 환경은 맥입니다.)

docker push 중에 선생님과 다른 결과창이 떠서 궁금한게 생겨 질문남깁니다.

 

스크린샷 2024-10-01 오후 2.42.53.png

 

메세지 내용을 정확하게 이해할 수 없어 챗지피티한테 먼저 물어봤습니다.

스크린샷 2024-10-01 오후 2.43.08.png스크린샷 2024-10-01 오후 2.43.30.png

 

지피티한테 답변을 받은 이후에 생긴 궁금증들 입니다.

 

  1. 레이어가 마운트되고 있다는게 정확하게 무슨 의민가요?

     

    우선 레이어도 무엇을 지칭하는지 모르겠습니다만ㅠ 현재 실습상황에서는 docker images 명령어를 통해 image를 확인해보면,

    스크린샷 2024-10-01 오후 2.51.13.png

    이렇게 나와있습니다. 원본 이미지(devwikirepo/simple-web)가 이미 존재하고 그에 대한 사본(sjin980530/simple-web)이 존재하기에 이런 경우가 발생하는건가요? 그럼 지금 진행하고 있는 실습은 push를 docker hub에 하고있는건데, 로컬의 상황과는 관계없는게 아닌가요?ㅠㅠ

  2. 현재 푸시된 이미지가 단일 플랫폼 이미지라는 말은 그럼 제 실습환경(mac)이 아닌 다른 환경(윈도우 등)에서는 사용하지 못하는 이미지라는 뜻인가요?

  3. 1과 이어지는 질문입니다 원래 레이어와 푸시된 레이어의 다이제스트가 매핑되고있다라고 하는데, 이건 어떻게 이해하면 될까요? 레이어에 대한 지식이 없어 어떤 상황인지 감이 잘 안잡힙니다.

 

항상 감사드립니다.

답변 2

0

데브위키님의 프로필 이미지
데브위키
지식공유자

wldls0530님 안녕하세요. 데브위키입니다.

  1. 먼저 Mounted from devwikirepo/simple-web 이라는 문구는 레이어의 원본이 devwikirepo/simple-web에 이미 존재하기 때문에 나타나는 메세지입니다. 도커 허브에 이미지를 푸시할 때 이미 다른 레파지토리(devwikirepo)에 레이어가 존재한다면, 새롭게 푸시하지 않고 기존의 레이어를 재활용합니다. 이미 도커 허브에 동일한 레이어가 존재하기 때문에 새롭게 푸시되지 않고 Mounted라고 표시되는 것입니다 😀

  2. 먼저 devwikirepo/simple-web 이미지의 경우 리눅스(amd64), 맥(arm)에 맞게 푸시되어 있습니다. 아래는 도커 허브에서 이미지를 조회한 화면입니다.

image.png

강의에서 자세하게 다루지는 않지만, 이미지는 커널에 따라 따로 푸시를 해야 합니다. 이런 특징은 컨테이너가 커널의 기능으로 동작하기 때문입니다. 따라서 이미지를 푸시할 때 별도로 지정하지 않으면 현재 CPU에 해당하는 이미지를 푸시합니다.

푸시하신 도커 허브 페이지를 보시면 아래와 같이 arm64만 푸시된 것을 확인하실 수 있습니다!

image.png

 따라서 해당 메세지는 원본 이미지는 멀티플랫폼(amd64, arm64, arm/v8)을 지원하지만, 푸시한 이미지는 arm64만 있다는 경고 메세지인 것으로 보입니다.

 

  1. 이 레이어가 아닌 이미지의 ID(다이제스트)가 매핑이 되고 있는 경우입니다. 먼저 로컬에서 이미지를 복사할 때 로컬 PC의 sjin980530/my-simple-web 이미지의 ID는 f50795...가 됩니다. 하지만 도커 허브에 이미지를 새롭게 푸시하면 새로운 ID인 d5a115...가 생성되기 때문에, sjin980530/my-simple-web 이미지의 ID가 로컬PC와 도커 허브가 달라지게 됩니다. 이 경우 매핑을 통해서 도커 내부적으로 처리되는 것으로 보입니다.

만약 아래 명령어를 통해 로컬 이미지를 제거하고 다시 이미지를 다운로드 받으면 아이디가 d5a115..로 변경되어 있으실 것 같습니다 :)

docker image rm sjin980530/my-simple-web
docker pull sjin980530/my-simple-web
docker image ls sjin980530/my-simple-web

 

더 궁금하신 점이 있으시면 추가 질문 부탁드립니다 👍

 

0

안녕하세요, 인프런 AI 인턴입니다. wldls0530님.

님께서 질문하신 Docker push 중 발생하는 경고 메시지와 관련된 질문에 대해 답변드리겠습니다.

  1. “레이어가 마운트되고 있다”는 것의 의미는?
    Docker 이미지는 여러 개의 계층(Layer)으로 구성됩니다. 각 계층은 이미지의 변화를 기록하고, 변경된 부분만을 저장합니다. 예를 들어, 처음 이미지를 만들 때 베이스 이미지를 사용하고, 추가적인 소프트웨어를 설치하거나 파일을 업데이트할 때마다 새로운 레이어가 생성됩니다. 이렇게 생성된 모든 레이어는 하나의 최종 이미지를 구성하게 됩니다.

Docker 명령어 docker push를 실행하면, Docker 레지스트리는 이미 해당 레이어를 가지고 있는지 확인합니다. 만약 레지스트리가 이미 해당 레이어를 가지고 있다면, 그 레이어를 다시 푸시할 필요 없이 단지 “마운트(Mounted)“라고 표기합니다. 즉, 이미 있는 레이어를 다시 푸시할 필요 없이 그대로 사용할 수 있다는 의미입니다.

관련 URL: 이미지 레이어 관련 질문 드립니다 - 해당 게시물에서는 Docker 이미지 레이어가 어떻게 공유되는지, 그리고 동일한 레이어를 사용하는 이미지의 관리를 자세히 설명합니다.

  1. 푸시된 이미지가 단일 플랫폼 이미지라는 의미는?
    이 메시지는 현재 푸시된 이미지가 특정 플랫폼(예: amd64, arm 등)에 대해서만 사용 가능하다는 것을 의미합니다. 이는 곧 다른 플랫폼(예: Windows, macOS)에서는 이 이미지를 사용할 수 없을 수도 있다는 경고입니다. 만약 여러 플랫폼에서 이미지를 사용하려면 각 플랫폼에 대한 내용을 모두 포함하는 멀티플랫폼 이미지를 푸시해야 합니다.

관련 URL: 이미지 레지스트리 manifest 관련 질문입니다 - 멀티플랫폼 이미지를 푸시하는 방법과 관련된 동작에 대해 설명하고 있습니다.

  1. 원래 레이어와 푸시된 레이어의 다이제스트가 매핑된다는 의미는?
    다이제스트는 Docker 이미지 레이어의 해시 값으로, 해당 레이어의 내용이 동일하면 같은 다이제스트를 가지게 됩니다. 이는 동일한 레이어를 여러 이미지에서 공유할 수 있게 하여 저장 공간을 절약하고 이미지 푸시 속도를 빠르게 합니다. 레이어가 이미 레지스트리에 있다면 해당 레이어의 해시 값(다이제스트)으로 매핑되어 푸시된 것으로 간주됩니다.

관련 URL: 이미지 레이어 관련 궁금증 질문드립니다! - 이미지 레이어의 개념과 이를 통해 저장 공간을 효율적으로 사용하는 방법을 설명합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

wldls0530님의 프로필 이미지
wldls0530

작성한 질문수

질문하기