8.1 Docker의 태깅
Docker에서 태깅은 이미지를 관리하기 쉽게 버전에 대해 라벨을 지정하는 과정이야. 이건 애플리케이션을 배포하고 업데이트하기 더 편하고 관리하기 쉽게 만들어줘. 이번 강의에서는 태그가 뭔지, 어떻게 사용하는지, 그리고 더 효율적으로 작업할 수 있는 팁들을 자세히 알아볼 거야.
Docker에서 태그 (tag)는 특정 이미지 버전을 식별할 수 있게 해주는 라벨이야. 태깅은 변경 사항을 추적하기 더 쉽게 만들고, 개발, 테스트, 프로덕션 같은 환경에 맞는 적절한 버전을 선택하는 데 도움을 줘.
태그의 주요 개념:
- 고유성: 태그는 특정 이미지 버전을 고유하게 식별해줘.
- 버전 관리: 태그를 활용해 이미지 버전을 나타낼 수 있어. 예를 들어, v1.0, v2.0, latest 같은 거 말이야.
- 유연성: 태그는 개발 과정의 특정 단계에 맞는 이미지를 만들 때 사용돼. 예를 들어,
beta
,stable
,prod
같은 걸로 말이야.
8.2 태그 사용하는 방법
1. 이미지 빌드할 때 태그 부여하기
-t
옵션과 docker build
명령어를 사용해서 이미지에 태그를 붙일 수 있어.
예시:
이 예에서는 이미지 이름을 myapp
로 설정하고 태그를 1.0으로 지정한 거야.
docker build -t myapp:1.0 .
2. 기존 이미지에 추가 태그 부여하기
docker tag
명령어를 사용해서 이미 존재하는 이미지에 새 태그를 추가할 수 있어.
예시:
이 예에서는 myapp:1.0
이미지에 추가 태그 latest
를 부여한 거야.
docker tag myapp:1.0 myapp:latest
3. 컨테이너 실행 시 태그 사용하기
컨테이너를 실행할 때 특정 이미지 태그를 명시할 수 있어.
예시:
이 예에서는 myapp
이미지와 1.0
태그를 기반으로 컨테이너를 실행한 거야.
docker run -d myapp:1.0
8.3 태깅 실습
Semantic Versioning 사용
Semantic Versioning(시맨틱 버저닝)은 이미지 변경 수준을 이해하는 데 도움을 주는 표준 버전 부여 방식이야.
Semantic Versioning 형식:
<major>.<minor>.<patch>
구성요소:
-
major
: 기존 버전과 호환되지 않는 주요 변경 사항. -
minor
: 기존 버전과 호환되는 새로운 기능. -
patch
: 버그 수정 및 기타 사소한 변경 사항.
예시:
docker build -t myapp:2.1.3 .
추가 라벨 사용
추가 라벨은 이미지 상태를 나타내는 데 도움을 줘. 예를 들어, beta
, alpha
, stable
또는 prod
같은 것들.
예시:
docker build -t myapp:1.0-beta .
docker build -t myapp:1.0-stable .
태그 업데이트
이미지를 업데이트할 때 변경 사항을 추적하기 쉽게 하려면 태그를 수정하는 것이 좋아. latest
태그는 종종 최신 이미지 버전을 나타내는 데 사용돼.
예시:
docker build -t myapp:2.0 .
docker tag myapp:2.0 myapp:latest
8.4 태그 사용 예제
다양한 환경에서 태그를 사용하는 예제:
예제 1: 개발
개발 환경에서는 dev
처럼 현재 버전이나 개발 상태를 나타내는 태그가 있는 이미지를 자주 사용한다.
docker build -t myapp:dev .
docker run -d myapp:dev
예제 2: 테스트
테스트 환경에서는 beta처럼 특정한 버전이나 상태를 나타내는 태그가 있는 이미지를 사용한다.
docker build -t myapp:1.1-beta .
docker run -d myapp:1.1-beta
예제 3: 프로덕션
프로덕션 환경에서는 stable
, prod
, 혹은 1.1.0-stable
처럼 안정적이고 검증된 버전을 사용하는 것이 중요하다.
docker build -t myapp:1.1.0-stable .
docker run -d myapp:1.1.0-stable
8.5 베스트 프랙티스
1. 항상 Semantic Versioning 사용하기
모든 이미지에 대해 Semantic Versioning을 준수해. 이건 변경 수준을 명확히 구별하고 버전 관리를 쉽게 해줘.
2. 이해하기 쉽고 의미 있는 태그 사용하기
이미지의 상태나 목적을 명확히 반영하는 태그를 사용해봐 (예: beta
, stable
, prod
).
3. production 환경에서 latest 사용하지 않기
latest
태그는 개발 및 테스트에 유용할 수 있지만, production에서는 예측 불가능한 변경을 피하기 위해 특정 버전을 사용하는 게 좋아.
4. 태그 사용법 문서화하기
프로젝트에서 태그가 어떻게, 무엇을 위해 사용되는지 문서화 해봐. 이건 팀이 버전 관리 프로세스를 더 잘 이해하고 실수를 줄이는 데 도움이 될 거야.
태그를 사용한 Dockerfile 예제
예제 1: 생성 및 태그 지정
# 1.0.0 버전용 Dockerfile
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
빌드 및 태그 지정 명령어
docker build -t myapp:1.0.0 .
docker tag myapp:1.0.0 myapp:stable
예제 2: 이미지 업데이트 및 태그 지정
# 새로운 기능이 추가된 1.1.0 버전용 Dockerfile
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN rm -rf /app/tests /app/docs
ENV NODE_ENV=production
EXPOSE 3000
CMD ["node", "app.js"]
빌드 및 태그 지정 명령어
docker build -t myapp:1.1.0 .
docker tag myapp:1.1.0 myapp:latest
GO TO FULL VERSION