Docker Hub 와 개인 레지스트리 간 전환 방법

DockerBeginner
지금 연습하기

소개

Docker 는 개발자가 일관되고 재현 가능한 방식으로 애플리케이션을 패키징하고 배포할 수 있도록 하는 인기 있는 컨테이너화 플랫폼입니다. Docker 생태계의 주요 구성 요소 중 하나는 Docker 레지스트리로, Docker 이미지를 저장하고 배포하는 저장소 역할을 합니다. 이 튜토리얼에서는 공개 Docker Hub 와 개인 Docker 레지스트리 간에 전환하는 방법을 배우게 되며, 이를 통해 Docker 배포를 안전하고 유연하게 만들 수 있습니다.

Docker 레지스트리 소개

Docker 레지스트리는 Docker 이미지를 저장하고 배포하는 중앙 허브입니다. 개발자 및 조직이 컨테이너화된 애플리케이션을 관리하고 공유할 수 있도록 Docker 생태계의 기반을 제공합니다. 이 섹션에서는 Docker 레지스트리의 기본 사항, 그 목적 및 사용 가능한 레지스트리의 유형을 살펴볼 것입니다.

Docker 레지스트리란 무엇인가요?

Docker 레지스트리는 Docker 이미지를 저장하고 배포하는 서버 측 애플리케이션입니다. Docker 이미지를 사용자 및 팀 간에 푸시, 풀 및 공유하는 저장소 역할을 합니다. Docker 레지스트리는 개발 환경부터 프로덕션 환경까지 다양한 환경에서 컨테이너화된 애플리케이션의 배포 및 구축을 가능하게 합니다.

Docker 레지스트리의 종류

Docker 레지스트리에는 크게 두 가지 유형이 있습니다.

  1. 공개 레지스트리: Docker Hub 와 같은 공개 레지스트리는 인터넷에 접속할 수 있는 모든 사용자에게 공개됩니다. 개발자가 자신의 애플리케이션을 시작하기 위한 출발점으로 사용할 수 있는 다양한 사전 구축된 Docker 이미지를 제공합니다.

  2. 개인 레지스트리: 개인 레지스트리는 개별 조직 또는 팀이 소유하고 관리합니다. 애플리케이션 아티팩트에 대한 더 큰 제어 및 보안을 보장하면서 사용자 고유의 맞춤형 Docker 이미지를 호스팅할 수 있습니다.

Docker 레지스트리 사용의 이점

Docker 레지스트리는 개발자 및 조직에 여러 가지 이점을 제공합니다.

  1. 중앙화된 이미지 저장: Docker 레지스트리는 Docker 이미지를 저장하고 관리하는 중앙 위치를 제공하여 애플리케이션을 공유하고 배포하기를 용이하게 합니다.

  2. 버전 관리 및 태깅: 레지스트리는 애플리케이션의 진화를 더 잘 조직하고 추적할 수 있도록 Docker 이미지를 태깅하고 버전 관리할 수 있도록 합니다.

  3. 확장성 및 고가용성: 강력한 Docker 레지스트리는 대량의 이미지 풀 및 푸시를 처리할 수 있으므로 애플리케이션이 확장되고 고가용성을 유지할 수 있도록 합니다.

  4. 보안 및 액세스 제어: 개인 레지스트리는 조직의 민감한 컨테이너 이미지를 보호하기 위해 액세스 제어 및 인증과 같은 향상된 보안 기능을 제공합니다.

  5. 자동화된 빌드 및 배포: Docker 레지스트리는 지속적인 통합 (CI) 및 지속적인 배포 (CD) 파이프라인과 통합될 수 있으며, 애플리케이션의 빌드 및 배포 프로세스를 간소화합니다.

Docker 레지스트리의 기본 사항을 이해함으로써 컨테이너화된 애플리케이션을 효과적으로 관리하고 배포하여 다양한 환경에서 일관되고 안정적인 배포를 보장할 수 있습니다.

Docker Hub 접근

Docker Hub 는 Docker 이미지를 위한 세계 최대의 공개 레지스트리로, 개발자가 자신의 애플리케이션을 시작하기 위한 출발점으로 사용할 수 있는 광범위한 사전 구축된 이미지를 제공합니다. 이 섹션에서는 Docker Hub 에 접근하고 상호 작용하는 방법을 살펴볼 것입니다.

Docker Hub 계정 등록

Docker Hub 에 접근하려면 계정을 생성해야 합니다. Docker Hub 웹사이트를 방문하고 "Sign Up" 버튼을 클릭하여 무료 Docker Hub 계정을 등록할 수 있습니다.

Docker Hub 로그인

Docker Hub 계정이 있으면 Docker CLI 를 사용하여 레지스트리에 로그인할 수 있습니다. 터미널을 열고 다음 명령어를 실행합니다.

docker login

이렇게 하면 Docker Hub 사용자 이름과 비밀번호를 입력하라는 메시지가 표시됩니다. 인증이 성공하면 Docker Hub 와 상호 작용을 시작할 수 있습니다.

Docker 이미지 검색

Docker Hub 에서 Docker 이미지를 검색하려면 docker search 명령어를 사용할 수 있습니다. 예를 들어, 공식 Ubuntu 이미지를 검색하려면 다음을 실행합니다.

docker search ubuntu

이렇게 하면 사용 가능한 Ubuntu 기반 이미지 목록, 설명, 별표 수 (인기 척도), 풀 수가 표시됩니다.

Docker 이미지 풀링

Docker Hub 에서 Docker 이미지를 풀하려면 docker pull 명령어를 이미지 이름 뒤에 추가합니다. 예를 들어, 최신 Ubuntu 이미지를 풀하려면 다음을 실행합니다.

docker pull ubuntu:latest

이렇게 하면 지정된 이미지가 Docker Hub 에서 다운로드되어 로컬 머신에 저장되고 Docker 컨테이너에서 사용할 준비가 됩니다.

Docker 이미지 푸시

자신의 Docker 이미지를 만들었으면 다른 사용자와 공유하기 위해 Docker Hub 로 푸시할 수 있습니다. 먼저 로컬 이미지를 적절한 Docker Hub 저장소 및 사용자 이름으로 태깅해야 합니다. 예를 들어:

docker tag my-image username/my-image:latest

그런 다음 docker push 명령어를 사용하여 Docker Hub 로 이미지를 푸시합니다.

docker push username/my-image:latest

Docker Hub 에 접근하고 상호 작용하는 기본 사항을 숙달함으로써 사전 구축된 Docker 이미지의 광범위한 생태계를 활용하고 자신만의 컨테이너화된 애플리케이션의 배포를 효율적으로 관리할 수 있습니다.

개인 레지스트리 구성

Docker Hub 는 편리한 공개 레지스트리를 제공하지만, 조직의 맞춤형 Docker 이미지를 호스팅하기 위해 개인 레지스트리를 설정해야 하는 경우가 있습니다. 이 섹션에서는 개인 Docker 레지스트리를 구성하는 방법을 안내합니다.

개인 레지스트리 배포

개인 Docker 레지스트리를 배포하려면 공식 Docker 레지스트리 이미지를 사용할 수 있습니다. 먼저 Docker Hub 에서 레지스트리 이미지를 풀합니다.

docker pull registry:2

그런 다음 다음 명령어를 사용하여 레지스트리 컨테이너를 실행합니다.

docker run -d --name registry -p 5000:5000 registry:2

이렇게 하면 로컬 머신에서 포트 5000 을 통해 수신하는 개인 Docker 레지스트리가 시작됩니다.

개인 레지스트리로 이미지 푸시

개인 레지스트리로 Docker 이미지를 푸시하려면 적절한 레지스트리 URL 로 태깅해야 합니다. 개인 레지스트리가 localhost:5000에서 실행 중이라고 가정하면 이미지를 다음과 같이 태깅할 수 있습니다.

docker tag my-image localhost:5000/my-image:latest

그런 다음 개인 레지스트리로 이미지를 푸시합니다.

docker push localhost:5000/my-image:latest

개인 레지스트리에서 이미지 풀링

개인 레지스트리에서 이미지를 풀하려면 다음 명령어를 사용합니다.

docker pull localhost:5000/my-image:latest

개인 레지스트리 보안

기본적으로 개인 레지스트리는 보안되지 않으므로 누구든지 접근하고 상호 작용할 수 있습니다. 개인 레지스트리의 보안을 강화하려면 HTTPS 를 사용하고 인증을 구현할 수 있습니다.

HTTPS 사용 설정

개인 레지스트리에 HTTPS 를 사용하려면 유효한 SSL/TLS 인증서가 필요합니다. 자체 서명된 인증서를 사용하거나 신뢰할 수 있는 인증 기관 (CA) 에서 인증서를 받을 수 있습니다.

인증서 및 키 파일이 있으면 다음 명령어를 사용하여 레지스트리 컨테이너를 실행할 수 있습니다.

docker run -d --name registry \
  -p 5000:5000 \
  -v /path/to/certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  registry:2

이렇게 하면 HTTPS 가 활성화된 레지스트리 컨테이너가 시작됩니다.

인증 구현

개인 레지스트리에 인증을 추가하려면 Docker 레지스트리가 제공하는 기본적인 기본 인증 메커니즘을 사용할 수 있습니다. 이는 암호 파일을 만들고 적절한 환경 변수로 레지스트리 컨테이너를 실행하는 것을 포함합니다.

개인 Docker 레지스트리를 구성하면 조직의 컨테이너 이미지에 대한 더 큰 제어권을 유지하고 애플리케이션의 보안 및 무결성을 보장할 수 있습니다.

요약

이 튜토리얼을 따르면 Docker Hub 와 개인 Docker 레지스트리 간 원활한 전환을 위한 지식을 얻게 됩니다. 이를 통해 공개 및 개인 레지스트리의 이점을 활용하여 Docker 배포를 보안하고, 확장 가능하며, 특정 요구 사항에 맞출 수 있습니다.