도커 이미지 레지스트리

JaeYeon·2025년 5월 5일
post-thumbnail

해당 포스팅은 개발자를 위한 쉬운 도커 를 수강하고 작성한 포스팅입니다.

이번엔 비교적 가벼운 내용이었지만, 앞으로 탐구해볼 내용이 너무나 많다고 생각되는 도커 이미지 레지스트리에 대해서 학습하였다.

이미지 레지스트리란

도커의 이미지 레지스트리란, 이미지를 관리하는 깃허브와 같은 개념이다. 깃허브가 코드의 형상을 관리해준다면 이미지 레지스트리는 그것을 포함한 많은 OS와 실행파일을 이미지로 압축하여 관리하는 것이다.

우리는 주로 docker hub를 사용하여 이미지를 관리했다.

하지만 이미지를 관리하는 허브에는 너무 많은 종류가 있었다. 그 중 ECR을 볼 수 있었다. 이전에 EKS나 쿠버네티스에 잠깐 관심을 갖게 되며 자연스레 ECR도 관심을 가졌었다.

그때는 나만의 도커 허브를 만드는 방법이라고만 이해해서, 그게 뭔소리야 도커허브를 왜만들어 라는 생각을 했었는데

이번 강의를 들으며 ECR에 대해 한 번 더 궁금해졌다.

생각해보면 우리가 만들어놓은 이미지를 아무나 가져다 쓸 수 있다고 하면 그건 너무 위험한 일이다. 이미지란 실행만 하면 어디서나 가능하도록 운영체제까지 압축을 한 압축파일인 만큼, 누가 어떻게 가져다 쓸지 모르는 존재이다.
그렇기 때문에 기업이나 보안을 유지해야하는 프로젝트에서는 HARBOR나 AWS ECR을 이용하여 도커 이미지를 관리하는 것이다.

하지만 우린 한 번도 도커를 실행시키며 도커 이미지 레지스트리를 신경쓴 적이 없는데, 왜그럴까?

그건 도커 이미지명 명명 규칙에 대해서 알아보면 알 수 있다.

이미지명 규칙

공부하면서 한 필기들이...

우리가 지금까지 이미지를 실행하기 위해 입력한 명령어는

docker run -d -p 80:80 --name test nginx 였다.

사실 여기엔 많은 정보가 숨겨져 있다. 저 nginx가 이미지 명인데, 사실 이미지 명은 저렇게 짧지 않다.

레지스트리 주소는 우리가 쓰는 허브 레지스트리를 의미한다. 기본값이 도커허브이고 만약 ECR을 사용한다면 ECR의 레지스트리 주소가 포함된다.

프로젝트 명은 사용자의 username이 포함된다. 이는 라이브러리라는 용어로 대체되는데, 이를 생략할 수 있는 몇몇 라이브러리가 존재한다. nignx를 제공하는 라이브러리는 위의 이미지처럼 공신력이 인증된 라이브러리이기 때문에 프로젝트명을 생략 할 수 있다.

그 밖에 태그가 존재한다. 태그는 이미지의 버전을 의미하는데 기본값으 latest, 즉 최신 버전을 자동으로 가져온다.


우리가 어떤 기업에 취직하여 이미지를 사용하게 된다면, 그 이미지는 레지스트리도 따로 관리할거고 버전도 마냥 최신버전이 아니라 배포버전 따로, 테스트 버전 따로 존재할 것이다.

라이브러리가 인증되면 좋겠지만~ 그런 곳이면 좋겠지만~ 아닐 수도 있으니까 모두 적어서 이미지를 이용해야한다.
그렇기 때문에 우리는 해당 이미지의 명명 규칙을 잘 알고 있어야한다.

도커 레지스트리 실습 중...

특별할거 없는 로그인이었는데, 난 갑자기 웹으로 연동되더니 로그인이 됐다.

신기하다 이렇게도 되는구나


내용이 간단해보였지만, 레지스트리에 대한 개념과 무엇보다 이미지의 버전을 다양하게 관리한다는 개념에서 굉장히 많은걸 배웠다.

태그의 개념을 알고는 있었지만, 이걸 뭐 사용하나 싶었는데 나도 다음에 실배포를 경험 할 수 있는 기회가 주어진다면 꼭 태그를 달리 구현하여 배포버전과 베타 버전을 나누어 관리해보고 싶다.

또한 이전의 배포 버전들의 경우도 버려버리는게 아니라 이미지를 통해 허브에 저장해놓을 수 있으니, 형상관리에도 매우 장점이 될 것이라고 생각된다.

profile
내가 세상에서 개발 제일 좋아해

0개의 댓글