1. Docker Hub를 사용하는 이유
Docker Hub는 Docker 공식에서 제공하는 클라우드 기반의 Container Image Registry(이미지 저장소) 서비스입니다. GitHub가 소스 코드를 저장하고 공유하는 공간이라면, Docker Hub는 빌드된 컨테이너 이미지를 저장하고 관리하는 공간입니다.
핵심 장점
- 손쉬운 이미지 공유 및 배포
- local에서 빌드한 이미지를 docker push 한 번으로 저장소에 업로드하고, 서버나 타 디바이스에서 docker pull로 빠르게 다운로드하여 실행할 수 있습니다.
- 공식 및 검증된 이미지 제공 (Official Images)
- Node.js, Python, MySQL, Ubuntu 등 검증된 최신 공식 이미지를 안전하게 가져와 사용할 수 있습니다.
- CI/CD 파이프라인 연동
- GitHub Actions, Jenkins 등 자동화 파이프라인에서 이미지를 빌드하고 Docker Hub에 자동 배포하는 구조를 쉽게 만들 수 있습니다.
- 개인/팀 단위 작업 관리
- Public 저장소를 통한 오픈소스 공유는 물론, Private 저장소를 통해 팀 내부 프로젝트용 이미지를 안전하게 관리할 수 있습니다.
2. Docker Hub Access Token이 필요한 이유
Docker CLI 로그인 시 계정의 원래 비밀번호(Password)를 그대로 사용할 수도 있지만, Access Token을 발급받아 사용하는 것을 강력히 권장합니다.
- 보안 강화: 실제 계정 비밀번호가 외부에 노출되는 것을 방지합니다.
- 권한 제어: 읽기 전용(Read-only), 읽기/쓰기(Read & Write) 등 필요한 권한만 최소한으로 부여할 수 있습니다.
- 액세스 철회 가능: 토큰이 노출되거나 더 이상 필요하지 않을 때 해당 토큰만 즉시 삭제(Revoke)할 수 있으며, 계정 비밀번호를 변경할 필요가 없습니다.
- CI/CD 자동화: CI/CD 도구(GitHub Secrets 등)에 계정 비밀번호 대신 토큰을 등록하여 안전하게 인증을 처리합니다.
3. Docker Hub Access Token 발급 과정
Docker Hub 공식 사이트에 접속하여 로그인한 후, 우측 상단의 프로필 아이콘을 클릭하고 Account Settings로 이동합니다.
좌측 메뉴에서 Personal access tokens 탭을 선택하고 내용을 채운 후 Generate new token 버튼을 클릭합니다.
- Access Token Description: 토큰의 용도를 작성합니다. (예: github-ci-push, home-server-access)
- Access permissions: 필요 최소 권한을 선택합니다.
- Read & Write: 이미지 push/pull 모두 필요한 경우 (일반적인 개발/CI 배포용)
- Read-only: 이미지 pull만 필요한 경우 (운영 서버 배포용)
Generate 버튼을 누르면 토큰 문자열이 생성됩니다. 이 토큰은 생성 직후 단 한 번만 표시되므로, 즉시 복사하여 안전한 곳이나 환경 변수에 저장해 두어야 합니다.

4. Access Token 사용법
1) 터미널(CLI)에서 로그인하기
로컬 터미널이나 서버에서 Docker Hub에 로그인할 때 비밀번호 대신 발급받은 토큰을 입력합니다.
docker login -u [Docker Hub 아이디]
비밀번호(Password) 입력 요청이 나올 때 발급받은 Access Token을 붙여넣으면 로그인이 완료됩니다.
Tip: 스크립트 기반 환경에서는 표준 입력을 이용해 아래와 같이 한 줄로 로그인할 수도 있습니다.
echo "<YOUR_ACCESS_TOKEN>" | docker login -u <YOUR_DOCKER_USERNAME> --password-stdin
2) GitHub Actions CI/CD 환경에 등록하기
GitHub Actions를 통해 이미지를 자동 빌드하고 Docker Hub에 push하려면 Repository의 Secrets에 등록하여 사용합니다.
- GitHub 저장소의 Settings > Secrets and variables > Actions로 이동합니다.
- New repository secret 버튼을 클릭합니다.
- 다음 두 개의 Secret을 추가합니다:
- DOCKERHUB_USERNAME: Docker Hub 계정 아이디
- DOCKERHUB_TOKEN: 발급받은 Access Token
- 워크플로우 YML 파일에서 아래와 같이 사용합니다:
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
마무리
Docker Hub는 컨테이너 중심의 현대 개발 환경에서 필수적인 이미지를 관리하고 배포하는 중심 축 역할을 합니다.
계정의 실제 비밀번호 대신 Personal Access Token을 발급받아 사용하면 보안성과 관리 편의성을 동시에 챙길 수 있습니다. CI/CD 자동화 구축이나 서버 배포 환경 설정 시 반드시 토큰 방식을 활용하시길 바랍니다!
