Docker Hub에 대해 알아야 할 모든 것

도커 허브 완벽 가이드: 이미지 관리 및 활용법

본 튜토리얼에서는 도커 허브 사용법 전반을 상세히 다룹니다. 도커 이미지를 직접 만들고, 이를 도커 허브에 게시하고 가져오는 과정을 포함하여 도커 허브의 핵심 기능을 소개합니다. 더불어 도커 허브에서 인기 있는 저장소들을 살펴봅니다.

사전 준비 사항

이 튜토리얼을 원활하게 진행하려면 Windows 및 Linux 환경에서 도커에 대한 기본적인 이해가 필요합니다. 실습을 위해 도커 데스크톱(Docker Desktop)을 설치하고 이미지를 빌드하여 도커 허브에 푸시할 것입니다. Windows 및 Mac 사용자는 여기에서, Linux 사용자는 이 링크에서 도커를 다운로드하여 설치할 수 있습니다.

도커 허브란 무엇인가?

도커 허브는 도커 Inc에서 제공하는 컨테이너 이미지 레지스트리 서비스입니다. 도커 이미지를 가져오고 게시하는 데 사용되며, 마치 GitHub에서 소스 코드를 관리하는 것과 유사하게 컨테이너 이미지를 관리할 수 있습니다. 도커 허브는 공개 및 비공개 리포지토리를 모두 지원하는 클라우드 기반 온라인 저장소입니다. 공개 리포지토리는 누구나 접근 가능하지만, 비공개 리포지토리는 소유자만 접근할 수 있으며, 일정 개수 이상의 비공개 리포지토리를 사용하려면 추가 비용이 발생할 수 있습니다.

도커 허브의 주요 기능

도커 허브는 다양한 기능들을 제공합니다.

1. 이미지 저장소

도커 허브는 컨테이너 이미지를 검색하고 가져오는 데 중요한 역할을 합니다.

뿐만 아니라, 사용자가 직접 빌드한 이미지를 공개 또는 비공개 리포지토리로 도커 허브에 게시하는 것도 지원합니다.

2. 팀 및 조직

팀을 생성하고, 팀원들만 접근할 수 있는 비공개 리포지토리를 만들어 컨테이너 이미지 접근 권한을 관리할 수 있습니다. 이를 통해 협업 환경에서 컨테이너 이미지를 효율적으로 관리할 수 있습니다.

3. GitHub 및 Bitbucket 연동

GitHub, Bitbucket과 같은 소스 코드 저장소와 통합하여 컨테이너 이미지 빌드 및 관리를 자동화할 수 있습니다.

4. 자동 빌드

소스 코드 리포지토리에 변경 사항이 푸시되면 자동으로 컨테이너 이미지를 빌드하고 도커 허브에 푸시하는 기능을 제공합니다. 이는 개발 프로세스를 간소화하고 시간을 절약해 줍니다.

5. 웹훅

웹훅을 사용하여 이미지가 도커 허브에 성공적으로 푸시되면 다른 서비스와의 통합을 트리거할 수 있습니다. 이를 통해 컨테이너 이미지 업데이트 시 다양한 작업을 자동화할 수 있습니다.

6. 공식 및 퍼블리셔 이미지

도커에서 제공하는 고품질 이미지는 공식 이미지로 간주되어 편리하게 사용할 수 있습니다. 또한 외부 공급업체에서 제공하는 인증된 이미지들은 Docker Enterprise와의 호환성과 안정성을 보장합니다. 이러한 인증된 이미지들은 개발 및 운영 환경에서 신뢰성을 높이는 데 기여합니다. 본 글 후반부에서 인증된 이미지에 대해 더 자세히 알아보겠습니다.

첫 번째 리포지토리 만들기

도커 허브를 사용하려면 도커 허브에 로그인해야 합니다. 계정이 없다면 회원가입을 통해 생성할 수 있습니다. 로그인이 완료되면 시작 페이지에서 “저장소 만들기”를 클릭하여 새로운 저장소를 생성할 수 있습니다.

  • “저장소 만들기”를 클릭하면 저장소 이름을 입력하는 화면이 나타납니다.

  • 공개 또는 비공개 설정을 선택합니다.

저장소 생성 시 GitHub 및 BitBucket과 같은 소스 코드 리포지토리를 통합하는 빌드 설정을 구성할 수도 있지만, 이는 선택 사항이며 나중에 설정할 수도 있습니다.

  • 모든 설정을 완료한 후 “만들기”를 클릭합니다.

이제 첫 번째 리포지토리가 성공적으로 생성되었습니다!

도커 허브는 무료 계정에는 하나의 비공개 저장소만을 제공합니다. 더 많은 비공개 저장소가 필요한 경우 유료 요금제로 업그레이드할 수 있습니다.

이제 도커 데스크톱 또는 터미널을 열고 다음 명령어를 사용하여 도커 허브에 로그인합니다.

docker login

이미지 검색

도커 허브에서 공개 리포지토리와 이미지를 검색하는 방법은 두 가지입니다. 도커 허브 웹사이트에서 직접 검색하거나, 명령줄 도구를 사용하여 검색할 수 있습니다. 예를 들어, MySQL 이미지를 검색하는 방법은 다음과 같습니다.

docker search mysql

이미지 다운로드

다음과 같이 docker pull 명령어를 사용하여 도커 허브에서 이미지를 다운로드할 수 있습니다.

# docker pull mysql

이미 해당 이미지가 컴퓨터에 있다면 위의 명령은 이미지를 최신 버전으로 업데이트합니다. 도커 검색 결과에는 수많은 MySQL 이미지가 표시됩니다. 이는 누구나 이미지를 푸시할 수 있기 때문입니다. 따라서 사용 사례에 맞는 적절한 이미지를 선택해야 합니다. 예를 들어, bitnami/mysql 이미지를 다운로드하려면 다음 명령어를 사용합니다.

# docker pull bitnami/mysql

이미지 생성

이미지 생성 과정은 Dockerfile을 필요로 합니다. Dockerfile은 도커에게 이미지를 어떻게 구성해야 하는지 알려주는 일종의 설명서입니다. Dockerfile은 이미지를 빌드하는 데 필요한 구성 명령어들을 담고 있습니다.

작동 원리

도커는 Dockerfile에 정의된 명령들을 순차적으로 실행하여 이미지를 빌드합니다. 도커 이미지는 계층화된 파일 시스템으로 구성되며, 각 계층은 Dockerfile의 특정 명령을 나타냅니다. Dockerfile을 사용하여 이미지를 생성하는 기본적인 방법은 다음과 같습니다.

먼저, 애플리케이션 설정을 정의하는 Dockerfile을 생성합니다.

# sudo vim Dockerfile

참고: 파일 이름은 대문자 ‘D’로 시작하는 Dockerfile이어야 합니다.

FROM ubuntu:16.04
MAINTAINER [email protected]
RUN apt-get update
RUN apt-get install –y mysql
CMD echo "My first image created."

Dockerfile에서 사용되는 주요 키워드를 살펴보겠습니다.

  • # 기호를 사용하여 주석을 추가할 수 있습니다.
  • FROM 키워드는 기반으로 사용할 기본 이미지를 정의합니다.
  • MAINTAINER 키워드는 이미지 관리자를 지정합니다.
  • RUN 키워드는 이미지 빌드 과정에서 실행할 명령을 지정합니다. 위의 경우, 시스템 업데이트 후 MySQL을 설치합니다.
  • CMD 키워드는 컨테이너가 시작될 때 실행할 명령을 지정합니다.
  • COPY 키워드는 호스트 OS에서 도커 컨테이너로 파일을 복사할 때 사용합니다.
  • EXPOSE 키워드는 컨테이너가 프로세스를 실행할 포트 번호를 지정합니다.

다음 명령어를 실행하여 도커 이미지를 빌드합니다.

명령 구문

docker build -t <사용자 이름>/<리포지토리 이름> .

# docker build -t asadali08537/first-repo .

위 명령어에서 이미지 이름은 .로 현재 작업 디렉토리를 나타냅니다. -t 옵션은 이미지에 태그를 지정하는 데 사용됩니다. 이미지 빌드가 성공적으로 완료되면 다음과 유사한 결과를 볼 수 있습니다.

이제 docker run 명령어를 사용하여 이미지를 실행해 보겠습니다.

docker run asadali08527/first-repo

위 명령어를 실행하면 Docker 이미지가 시스템에 MySQL을 설치하고 “My first image created.” 메시지를 표시합니다.

이미지 푸시

이미지가 성공적으로 생성되고 실행된 후에는 docker push 명령어를 사용하여 도커 허브에 푸시할 수 있습니다.

docker push asadali08527/first-repo

도커 허브에서 이미지 태그와 상태를 확인할 수 있습니다.

도커 인증 이미지란?

도커 인증 이미지는 벤더 또는 기여자들에 의해 게시되는 공식 이미지입니다. 도커 허브는 이미지 내용이 제공하는 규칙, 표준 및 법률을 준수할 때만 이미지를 인증합니다. 즉, 특정 기준을 통과해야 합니다.

도커 허브는 공급업체가 이미지 및 플러그인을 자체 인증할 수 있도록 inspectDockerImage 도구를 제공합니다. (일반적으로 공급업체나 기여자는 볼륨 및 네트워크 로깅을 위한 플러그인을 게시합니다.)

참고:

도커 인증 이미지로 게시하려면 먼저 이미지와 플러그인을 인증하고 테스트해야 합니다. inspectDockerImage 도구를 사용하여 성공적으로 인증하고 테스트를 완료하면 도커 허브에서 인증됩니다. 인증되지 않은 환경이 필요한 콘텐츠는 인증된 이미지로 게시할 수 없습니다.

도커 허브의 인기 이미지

도커 허브에는 다양한 카테고리의 최적화된 이미지가 많이 있습니다.

이러한 이미지들의 인기는 다운로드 수, 시장 점유율, 평점, 만족도 등 여러 요인에 따라 결정됩니다. 가장 인기 있는 리포지토리 목록은 도커 허브 웹사이트에서 확인할 수 있습니다. 또한, 이미지 사용은 OS와 아키텍처에 따라 다릅니다. 이미지 다운로드 전에 다음 주요 사항들을 고려해야 합니다.

  • 태그를 사용하여 특정 버전을 찾습니다. (최신 버전을 주로 사용합니다.)
  • 다운로드 수와 별점이 높은 것을 선택합니다.
  • 최근 업데이트 날짜를 확인합니다.
  • 가능하면 인증된 게시자(Docker Certified)나 공식 게시자의 이미지인지 확인합니다.

웹훅

웹훅은 이벤트에 따라 작동하는 웹 콜백이며, 애플리케이션이 다른 애플리케이션에 실시간 정보를 제공하는 방법입니다. 대부분의 애플리케이션에서 웹훅 기능을 제공하며, 도커 허브도 마찬가지입니다.

웹훅은 사용자 정의 이벤트에 의해 트리거되는 HTTP 푸시 API입니다. 도커 허브의 웹훅을 활용하여 이미지 업데이트를 사용하는 애플리케이션이나 서비스에 알릴 수 있습니다. 일반적인 사용 사례는 새 이미지가 업로드되면 테스트 애플리케이션이 테스트 케이스를 실행하도록 트리거하는 것입니다.

테스트 결과가 성공적이면 컨테이너를 배포하는 또 다른 이벤트를 트리거하고, 배포가 성공적으로 완료되면 변경 사항을 기록하는 이벤트를 트리거할 수 있습니다.

결론

이제 도커 허브와 이미지 검색, 생성, 푸시 방법에 대한 전반적인 이해가 생겼을 것입니다. 공개 이미지를 푸시하면 누구나 해당 이미지를 사용할 수 있습니다.

아직 도커를 설치하지 않았다면 이 도커 설치 가이드를 참고하세요.