🏗 Docker 이미지 빌드부터 태그, 퍼블리시까지 완전 정복
실무에서 바로 쓰는 Docker 이미지 배포 프로세스 따라하기

📦 Docker 이미지란 무엇인가?
Docker 이미지란 컨테이너를 실행하기 위한 설정과 코드가 포함된 일종의 템플릿입니다. 이 이미지를 기반으로 컨테이너가 실행되며, 동일한 이미지를 기반으로 수십, 수백 개의 컨테이너를 띄울 수 있죠.
Docker 이미지를 만들고 Docker Hub와 같은 레지스트리에 업로드하면 다음과 같은 이점이 있습니다:
- 언제 어디서나 동일한 환경 제공
- CI/CD 파이프라인과 연동 가능
- 협업 시 환경 통일
- 배포 자동화 기반 마련
⚙️ 기본 실습 개요
이번 실습은 다음 3단계로 구성됩니다.
- Dockerfile로 이미지 빌드
- 이미지에 태그(Tag) 붙이기
- Docker Hub에 퍼블리시(Push)
예시는 간단한 Node.js 웹 서버로 구성합니다.
🧾 1단계: Dockerfile 작성 및 이미지 빌드
📂 디렉토리 구조
/my-app
├── app.js
├── package.json
└── Dockerfile
📜 Dockerfile 예시
FROM node:20
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "app.js"]
🛠 이미지 빌드 명령어
docker build -t my-node-app .
- -t: 태그를 지정합니다 (지금은 로컬에서 사용할 이름)
- .: 현재 디렉토리 기준
빌드가 완료되면 docker images로 확인 가능
🏷 2단계: 이미지 태그 지정
Docker Hub에 업로드하기 위해서는 Docker Hub 계정명을 포함한 태그가 필요합니다.
docker tag my-node-app yourusername/my-node-app:1.0
예를 들어 Docker Hub 계정이 dongjin93이라면:
docker tag my-node-app dongjin93/my-node-app:1.0
여기서 1.0은 버전 번호입니다.
태그는 버전 관리뿐만 아니라, latest, dev, prod 등 목적에 따라 다양하게 붙일 수 있습니다.
☁️ 3단계: Docker Hub 로그인 및 이미지 퍼블리시
🔐 로그인
docker login
계정명과 비밀번호를 입력하면 인증이 완료됩니다.
⬆️ 퍼블리시(Push)
docker push yourusername/my-node-app:1.0
Docker는 이 이미지를 Docker Hub에 업로드합니다.
업로드가 완료되면 웹 UI에서 직접 확인할 수 있습니다.
🌐 어디서든 실행 가능
이제 퍼블리시한 이미지는 전 세계 어디서든 다음 명령어 하나로 사용할 수 있습니다.
docker run -p 3000:3000 yourusername/my-node-app:1.0
자신이 만든 앱을 온프레미스 서버, 클라우드, CI 테스트 환경 어디든 실행할 수 있게 된 것입니다.
🧠 팁: 실전에서 유용한 태그 전략
태그 예시 설명
latest | 가장 최신 버전. 자동 업데이트 시 유용 |
1.0, 1.1 | 버전 관리용. 하위 호환성 테스트 시 유용 |
dev, prod | 환경에 따라 분리된 이미지 운용 가능 |
추천 전략:
- 개발 단계는 dev, 테스트 시 staging, 최종 배포는 prod 또는 구체적 버전 번호 사용
🧭 마무리하며
Docker 이미지를 직접 만들고, 태그를 붙이고, 퍼블리시하는 과정은 개발자의 배포 능력을 확장시켜주는 중요한 기술입니다.
처음에는 어렵게 느껴질 수 있지만, 위 단계를 몇 번만 반복해 보면 금방 익숙해집니다.
특히, 팀 프로젝트나 협업, 배포 자동화 환경에서는 필수적인 개념이므로 꼭 익혀두시기 바랍니다.
나만의 Docker 이미지 만들고 Docker Hub에 올리기
나만의 Docker 이미지 만들고 Docker Hub에 올리기
🚀 나만의 Docker 이미지 만들고 Docker Hub에 올리기실습 중심! 이미지 빌드부터 푸시까지 한 번에 따라해보기🧱 시작하며: 왜 Docker 이미지를 만들어야 할까?Docker는 애플리케이션을 컨테이너 단위
jjig810906.tistory.com
'Program' 카테고리의 다른 글
Docker 컨테이너 데이터 Volume / Bind Mounts (0) | 2025.06.05 |
---|---|
Docker Hub에서 더 이상 사용되지 않는 API 목록 정리 (1) | 2025.06.05 |
나만의 Docker 이미지 만들고 Docker Hub에 올리기 (0) | 2025.06.05 |
Dockerfile 작성법 완전 정복 (0) | 2025.06.05 |
Docker 컨테이너 기본 명령 오버라이딩 이해하기 (0) | 2025.06.05 |