CodeGym /행동 /Docker SELF /태그와 이미지 버전

태그와 이미지 버전

Docker SELF
레벨 14 , 레슨 2
사용 가능

8.1 Docker의 태깅

Docker에서 태깅은 이미지를 관리하기 쉽게 버전에 대해 라벨을 지정하는 과정이야. 이건 애플리케이션을 배포하고 업데이트하기 더 편하고 관리하기 쉽게 만들어줘. 이번 강의에서는 태그가 뭔지, 어떻게 사용하는지, 그리고 더 효율적으로 작업할 수 있는 팁들을 자세히 알아볼 거야.

Docker에서 태그 (tag)는 특정 이미지 버전을 식별할 수 있게 해주는 라벨이야. 태깅은 변경 사항을 추적하기 더 쉽게 만들고, 개발, 테스트, 프로덕션 같은 환경에 맞는 적절한 버전을 선택하는 데 도움을 줘.

태그의 주요 개념:

  1. 고유성: 태그는 특정 이미지 버전을 고유하게 식별해줘.
  2. 버전 관리: 태그를 활용해 이미지 버전을 나타낼 수 있어. 예를 들어, v1.0, v2.0, latest 같은 거 말이야.
  3. 유연성: 태그는 개발 과정의 특정 단계에 맞는 이미지를 만들 때 사용돼. 예를 들어, beta, stable, prod 같은 걸로 말이야.

8.2 태그 사용하는 방법

1. 이미지 빌드할 때 태그 부여하기

-t 옵션과 docker build 명령어를 사용해서 이미지에 태그를 붙일 수 있어.

예시:

이 예에서는 이미지 이름을 myapp로 설정하고 태그를 1.0으로 지정한 거야.

Terminal


docker build -t myapp:1.0 .

2. 기존 이미지에 추가 태그 부여하기

docker tag 명령어를 사용해서 이미 존재하는 이미지에 새 태그를 추가할 수 있어.

예시:

이 예에서는 myapp:1.0 이미지에 추가 태그 latest를 부여한 거야.

Terminal


docker tag myapp:1.0 myapp:latest

3. 컨테이너 실행 시 태그 사용하기

컨테이너를 실행할 때 특정 이미지 태그를 명시할 수 있어.

예시:

이 예에서는 myapp 이미지와 1.0 태그를 기반으로 컨테이너를 실행한 거야.

Terminal


docker run -d myapp:1.0

8.3 태깅 실습

Semantic Versioning 사용

Semantic Versioning(시맨틱 버저닝)은 이미지 변경 수준을 이해하는 데 도움을 주는 표준 버전 부여 방식이야.

Semantic Versioning 형식:


<major>.<minor>.<patch>

구성요소:

  • major: 기존 버전과 호환되지 않는 주요 변경 사항.
  • minor: 기존 버전과 호환되는 새로운 기능.
  • patch: 버그 수정 및 기타 사소한 변경 사항.

예시:

Terminal


docker build -t myapp:2.1.3 .

추가 라벨 사용

추가 라벨은 이미지 상태를 나타내는 데 도움을 줘. 예를 들어, beta, alpha, stable 또는 prod 같은 것들.

예시:

Terminal


docker build -t myapp:1.0-beta .
docker build -t myapp:1.0-stable .

태그 업데이트

이미지를 업데이트할 때 변경 사항을 추적하기 쉽게 하려면 태그를 수정하는 것이 좋아. latest 태그는 종종 최신 이미지 버전을 나타내는 데 사용돼.

예시:

Terminal


docker build -t myapp:2.0 .
docker tag myapp:2.0 myapp:latest

8.4 태그 사용 예제

다양한 환경에서 태그를 사용하는 예제:

예제 1: 개발

개발 환경에서는 dev처럼 현재 버전이나 개발 상태를 나타내는 태그가 있는 이미지를 자주 사용한다.

Terminal


docker build -t myapp:dev .
docker run -d myapp:dev

예제 2: 테스트

테스트 환경에서는 beta처럼 특정한 버전이나 상태를 나타내는 태그가 있는 이미지를 사용한다.

Terminal


docker build -t myapp:1.1-beta .
docker run -d myapp:1.1-beta

예제 3: 프로덕션

프로덕션 환경에서는 stable, prod, 혹은 1.1.0-stable처럼 안정적이고 검증된 버전을 사용하는 것이 중요하다.

Terminal


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: 생성 및 태그 지정

Dockerfile

# 1.0.0 버전용 Dockerfile 
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]

빌드 및 태그 지정 명령어

Terminal


docker build -t myapp:1.0.0 .
docker tag myapp:1.0.0 myapp:stable

예제 2: 이미지 업데이트 및 태그 지정

Dockerfile

# 새로운 기능이 추가된 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"]

빌드 및 태그 지정 명령어

Terminal

        
docker build -t myapp:1.1.0 .
docker tag myapp:1.1.0 myapp:latest
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION