
저번시간에는 Docker의 고급 기능과 Docker compose에 대해서 알아 보았다. 이번 포스팅에서는 이미지를 저장하여 주는 클라우드 서비스인 Docker hub에 대해서 알아보고자 한다.
Docker image를 저장하고 공유할 수 있는 클라우드 기반의 저장소 서비스
Docker Hub는 Docker image를 처음, 관리, 공유할 수 있는 가장 대표적인 플랫폼으로 널리 사용되고 있다.
이미지 저장 및 다운로드 : 개발자가 생성한 Docker image를 저장할 수 있는 중앙 저장소를 제공하기 때문에 저장된 image는 언제든지 다운로드받아 사용할 수 있다.
공유 및 협업 : 다른 사람들과 공유하거나 제한된 사용자만 접근할 수 있도록 설정할 수 있어 공유 및 협업이 가능하다.
Official Image 제공 : Docker 팀에서 직접 관리하는 Docker official image들을 제공한다.
빠른 환경 구축 : Docker Hub 커뮤니티가 제공하는 수많은 image들을 활용하여 프로젝트에 적합한 환경을 빠르게 구축할 수 있다.
이러한 Docker Hub를 활용하면 손쉬운 이미지 배포, 효율적인 협업, 그리고 코드 변경과 이미지를 자동으로 빌드하고 배포할 수 있어 DevOps 환경에서 생산성을 높일 수 있다 (자동화된 워크플로우).
| 역할 | |
|---|---|
| GitHub | 소스코드를 올리고 공유하는 저장소 |
| Docker Hub | 도커 이미지를 올리고 공유하는 저장소 |
[ 내 로컬 PC ] [ Docker Hub ] [ EC2 서버 ]
docker build → 이미지 생성
docker push → ─────────────→ 이미지 저장소에 업로드
(jaewon3640/recycle-app)
↓ docker pull
EC2가 이미지 다운로드
docker compose up → 서버 실행
EC2에서 빌드 안 해도 된다.
# Docker Hub 없이 (EC2에서 빌드)
EC2에서 gradle build + npm run build 직접 실행
→ t2.micro 사양으로 빌드하면 느리고 메모리 부족 위험
# Docker Hub 있으면 (로컬에서 빌드 후 push)
EC2는 그냥 pull 받아서 실행만 하면 됨
→ 빠르고 안정적
① Docker Hub 계정 생성
② 로컬에서 이미지 빌드
docker build -t jaewon3640/recycle-app .
docker build -t jaewon3640/recycle-frontend .
③ Docker Hub에 push
docker push jaewon3640/recycle-app
docker push jaewon3640/recycle-frontend
④ EC2에서 pull 후 실행
docker compose up -d
직접 hub.docker.com 에 접속해서 회원가입을 진행한다.
위 링크로 접속 후 우측 상단의 Sign up 버튼을 통해 회원가입을 진행할 수 있다.
사용자는 서버에서 docker image가 수정될 때마다 push를 할 수 있도록 docker login을 해주어야 한다.
회원가입시 설정한 username을 통해 login이 가능하다.

$ (sudo) docker login -u <username>
로그인 성공 시 아래와 같이 Login Succeeded 메시지가 출력된다.
Login Succeeded
Docker Hub에 이미지를 push 해주는 명령어를 실행시켜보자.
(sudo) docker push <docker_hub_username>/<image_name>:<tag>
docker build -t jaewon3640/recycle-app .
docker build -t jaewon3640/recycle-frontend .
# 태그도 있어야 된다!
docker push jaewon3640/recycle-frontend:latest
docker push jaewon3640/recycle-frontend:latest

push 완료 후 Docker Hub의 Repository에서 잘 올라간 것을 확인할 수 있다.
Q :여기서 MySQL 이미지는 없는데 안 올려도 괜찮은건가...?
A : 그렇다.
MySQL은 이미 Docker Hub에 공식 이미지가 있다.
image: mysql:8.0 # Docker Hub 공식 이미지 자동으로 pull
docker compose up 실행하면 MySQL은 Docker Hub 공식 저장소에서 자동으로 받아온다.
직접 만든 이미지는 push하면 되고, 공식 이미지는 그냥 그대로 사용하면 된다.
| 이미지 | 설명 |
|---|---|
✅ jaewon3640/recycle-app | 우리가 만든 Spring Boot → push 필요 |
✅ jaewon3640/recycle-frontend | 우리가 만든 React → push 필요 |
❌ MySQL | 공식 이미지 그대로 사용 → push 불필요 |
이것을 커스텀하면 올려야 되지만 아니라면 그냥 그대로 올려도 된다.
Docker image를 저장·관리·공유할 수 있는 클라우드 기반 이미지 저장소로, 소스코드를 관리하는 GitHub처럼 도커 이미지를 관리하는 플랫폼이다.
| 상황 | 설명 |
|---|---|
| 🚀 빠른 배포 | 로컬에서 빌드 후 push → EC2는 pull만 하면 됨 |
| 💾 EC2 부담 감소 | t2.micro에서 직접 빌드 시 메모리 부족 위험 방지 |
| 🤝 협업 용이 | 팀원 누구든 같은 이미지를 pull 받아 동일 환경 구성 가능 |
| 📦 공식 이미지 활용 | MySQL, Redis 등 공식 이미지를 그대로 사용 가능 |
1. hub.docker.com 회원가입
↓
2. shell에서 로그인
docker login -u <username>
↓
3. 로컬에서 이미지 빌드
docker build -t <username>/<image-name> .
↓
4. Docker Hub에 push
docker push <username>/<image-name>:latest
↓
5. EC2에서 pull 후 실행
docker compose up -d
| 명령어 | 설명 |
|---|---|
docker login -u <username> | Docker Hub 로그인 |
docker build -t <username>/<name> . | 이미지 빌드 |
docker push <username>/<name>:latest | 이미지 업로드 |
docker pull <username>/<name>:latest | 이미지 다운로드 |
docker compose up -d | 컨테이너 실행 |
| 이미지 | push 필요 여부 | 이유 |
|---|---|---|
| ✅ 직접 만든 Spring Boot 앱 | 필요 | 커스텀 이미지이므로 직접 올려야 함 |
| ✅ 직접 만든 React 앱 | 필요 | 커스텀 이미지이므로 직접 올려야 함 |
| ❌ MySQL, Redis 등 | 불필요 | Docker Hub 공식 이미지 자동 pull |
💡 한 줄 요약 : 로컬에서 빌드 → Docker Hub에 push → EC2에서 pull & 실행. EC2는 실행만 담당!