개요
이미지나 컨테이너의 이름(REPOSITORY)나 태그(TAG)를 지정하지 않았을 때 항상 이미지나 컨테이너의 목록을 조회하고, 자동으로 생성된 해당 ID를 수동으로 복사하여 사용했습니다.
잊어버리거나 입력하기 상당히 불편합니다. 도커에는 이를 해결할 수 있는 고유 옵션을 부여할 수 있는 기능이 있습니다.
본 글에서는 Docker에서 컨테이너와 이미지에 이름과 태그를 지정하는 방법과 필요성에 대해서 알아보겠습니다.
컨테이너에 이름 부여하기 : --name
docker run --help
위 명령어를 입력하면 여러 리스트가 출력되는데 아래와 같은 --name 옵션을 확인할 수 있습니다.
사용 방법
docker run --rm "부여할 이름" "이미지 ID"
이 --name 옵션을 사용하여 이미지를 빌드하면 간단히 컨테이너에 이름을 부여할 수 있습니다.
위와 같이 "goalsapp"으로 컨테이너에 이름을 부여하고, docker ps 명령어로 컨테이너 목록을 확인한다면 컨테이너를 만들 때 부여한 이름이 지정된 것을 확인할 수 있습니다.
장점
1. 가독성 향상
- 컨테이너 이름을 통해 컨테이너의 역할과 용도를 쉽게 파악할 수 있어 가독성이 좋아집니다.
긴 컨테이너 ID대신 직관적인 이름을 사용할 수 있습니다.
2. 관리 용이성
- 컨테이너 제어 명령어에서 컨테이너 ID 대신 짧은 이름을 사용할 수 있어 관리가 편리해집니다.
- 스크립트나 자동화 툴에서도 이름 기반으로 컨테이너를 다루면 코드가 읽기 쉬워집니다.
이미지 태그의 구성 요소
이미지 태그는 name과 tag로 두 부분으로 구성됩니다.
- name
- 이름을 사용하여 이미지의 일반적인 이름을 설정할 수 있습니다.
- 정확히 말하자면 여러 개의 특정화된 이미지 그룹을 만들 수 있습니다.
- tag (option)
- 이미지보다 특정화된 버전을 정의할 수 있습니다.
docker hub의 node페이지를 보면 위와 같이 많은 태그 리스트들이 있습니다. 여기있는 모두는 "node:" 뒤에 설정할 수 있는 태그들입니다.
이 태그들은 노드에 알려주거나, docker hub에 알려주는 태그로 사용할 수 있습니다.
예를 들어, 애플리케이션을 실행하려는 호스트가 Node 버전이 10이나 12만 지원한다는 것을 알고 있다면, 노드의 12버전을 사용하기 위해 버전을 지정할 수 있습니다.
이미지의 다른 버전이나 다른 구성이 있는 경우라면, 이름을 태그와 결합할 수 있습니다.
이름과 태그를 결합한다면 이미지에 특정화된 버전에 대한 "고유 식별자"를 가지게 됩니다.
물론태그가 없다면이름만으로도 이미 고유 식별자입니다.
이미지 태그에 태그 지정하기
이미지에 태그를 지정하는 방법은 크게 두 가지 있습니다.
1. 이미지 빌드 시 태그 지정
docker build -t myimage:1.0 .
Dockerfile로부터 이미지를 빌드할 때 -t 옵션 사용하여 태그를 지정할 수 있습니다. 이름만 지정하면 태그는 자동으로 latest로 설정됩니다.
태그는 단어(문자열)가 될 수 있고, 숫자도 가능합니다.
2. 기존 이미지에 태그 추가
docker tag myimage:1.0 myimage:latest
docker tag 명령어를 사용하여 이미 존재하는 이미지에 추가 태그를 지정할 수 있습니다. 위 경우 myimage:1.0와 myimage:latest는 동일한 이미지를 가리키게 됩니다.
3. 태그를 포함한 이미지 Pull
docker pull myimage:1.0
레지스트리에서 이미지를 Pull할 때 태그를 명시할 수 있습니다. 태그를 명시하지 않으면 latest 태그의 이미지가 Pull됩니다.
4. 태그를 포함한 이미지 Push
docker push myimage:1.0
latest 태그 이미지를 Push하려면 명시적으로 latest 태그를 붙여야 합니다.
이처럼 도커 이미지에 태그를 지정하는 방법은 빌드 시점, 기존 이미지에 대한 태그 추가, Pull/Push 시 태그 명시 등 다양한 방식으로 가능합니다. 상황에 맞게 적절한 방법을 선택하여 이미지 태그를 활용할 수 있습니다.
이미지 태그의 장점
1. 버전 관리
- 태그로 이미지의 버전을 명확히 구분
- 다양한 버전의 이미지를 효과적으로 관리 가능
2. 버전 관리
- 태그로 이미지의 용도, 버전, 상태 등을 쉽게 파악
- 직관적인 태그를 통해 이미지를 빠르게 식별하고 관리
3. 버전 관리
- 태그가 있어야 레지스트리에 이미지를 정확히 공유하고 배포 가능
- 태그로 배포할 버전을 명확히 지정하여 배포 과정 간소화
4. 버전 관리
- 문제 발생 시 이전 버전 태그로 신속한 롤백 가능
- 태그를 활용하여 버전 간 전환을 매끄럽게 진행
'DevOps > Docker' 카테고리의 다른 글
[Docker] 컨테이너의 파일시스템 이해하기: 데이터는 어디에 저장될까❓ (0) | 2025.01.05 |
---|---|
[Docker] Docker cp로 컨테이너 ↔ 로컬 간 파일 복사하기 (0) | 2024.12.29 |
[Docker] Docker 컨테이너의 실행 모드: Attach vs Detach (0) | 2024.12.26 |
[Dokcer] 도커 레이어 시스템 이해하기: 이미지와 컨테이너의 구성 원리 (0) | 2024.12.17 |
[Docker] EXPOSE 명령어와 docker run -p 옵션의 차이점 알아보기 (0) | 2024.12.01 |