
Docker는 태그를 사용하여 이미지의 고유한 버전을 식별합니다. 광범위한 컨테이너 커뮤니티와 마찬가지로 태그를 사용하여 각 릴리스를 표시해야 사용자가 다른 버전 중에서 선택할 수 있습니다.
태그는 여러 옵션이 제공될 때 키 종속성의 ID와 같은 이미지의 다른 특성을 설명하는 데 사용될 수도 있습니다. 이런 종류의 태그를 제공하는 이미지 공급업체를 찾는 것은 드문 일이 아닙니다.
example-image:1.1.0-apache example-image:1.1.0-nginx example-image:1.2.0-apache example-image:1.2.0-nginx
이 태그 체계를 사용하면 Apache 또는 NGINX를 이미지 기반으로 제공하면서 다른 버전의 이미지를 선택할 수 있습니다.
빌드하거나 가져오는 모든 이미지에 고유한 태그를 추가할 수 있습니다. 로컬 태그를 사용하면 나중에 특정 이미지를 빠르게 식별할 수 있습니다. 이 가이드에서는 Docker CLI를 사용하여 이미지 태그를 관리하는 방법을 보여줍니다.
태그 추가
태그는 다음을 사용하여 이미지에 추가됩니다. docker tag 명령. 태그는 다음을 사용하여 이미지를 빌드할 때도 첨부할 수 있습니다. docker build 통과하여 -t 깃발.
그만큼 tag 명령은 두 개의 인수를 취합니다. 기존의 이미지를 식별하는 태그와 해당 이미지에 할당할 새 “대상” 태그:
# docker tag <source image> <new tag> docker tag example-image:1.1.0 example-image:1.1.0-apache
이제 두 태그가 동일한 이미지를 참조하므로 서로 바꿔서 사용할 수 있습니다. 그러나 실행 docker pull example-image:1.1.0 영향을 미치지 않을 것 1.1.0-apache 꼬리표. 태그의 이미지 참조는 CLI 명령에 수동으로 포함하지 않는 한 업데이트되지 않습니다.
이 규칙의 한 가지 예외는 종종 잘못 이해됩니다. latest 꼬리표. 다음과 같이 태그 없이 “베어” 이미지를 가져올 때 docker pull example-imageDocker는 암시적으로 사용 latest.
태그 없는 이미지
그만큼 docker tag 명령은 기존 태그 대신 소스 참조로 이미지 ID를 허용합니다. 태그가 지정되지 않은 이미지로 끝나면 다음을 실행하십시오. docker images 명령을 사용하여 ID를 찾은 다음 docker tag 새 태그를 할당하려면:
docker tag 0e3e06b48755 example-image:latest
새 버전의 태그를 가져올 때 태그가 지정되지 않은 이미지가 있을 수 있습니다.
# already has example-image:latest docker pull example-image:latest
원래 목표는 example-image:latest 태그가 시스템에 여전히 존재하지만 지금은 태그가 지정되지 않았습니다. 풀은 새 이미지 데이터를 다운로드하고 latest 참조하는 태그입니다.
태그를 사용하여 이미지 푸시
새 태그를 추가해야 하는 한 가지 상황은 레지스트리 간에 이미지를 푸시할 때입니다. 레지스트리 URL은 태그의 일부입니다. 푸시하려는 레지스트리가 포함된 새 태그를 추가한 다음 docker push 업로드하려면:
docker tag example-image:latest registry.example.com/example-image:latest docker push registry.example.com/example-image:latest
URL 구성 요소 없이 베어 태그를 푸시하면 이미지 데이터가 Docker Hub로 전송됩니다. 따라서 개인 레지스트리와 상호 작용할 때 서버의 호스트 이름과 선택적 포트 번호가 포함된 태그를 추가해야 합니다.
태그 교체 및 수정
그만큼 docker tag 명령은 기존 태그가 대상으로 사용되는 경우 태그의 참조를 자동으로 대체합니다.
docker tag first-image:latest demo docker tag second-image:latest demo
그만큼 demo 태그는 이제 다음을 참조합니다. second-image 참조하는 데 사용할 수 없습니다. first-image. 나머지 태그를 사용하여 첫 번째 이미지와 계속 상호작용할 수 있습니다. first-image:latest. 두 번째 이미지는 다음 중 하나를 사용하여 선택할 수 있습니다. second-image:latest 또는 demo.
이미지 태그는 일반적으로 변경할 수 없는 것으로 처리되어야 합니다. 태그 참조를 수정하는 이 기술은 로컬 구성 목적으로 사용하는 태그를 제외하고는 피하는 것이 가장 좋습니다. 업데이트된 태그를 공용 레지스트리에 푸시하는 것은 해당 태그에 의존하는 사용자가 다음에 가져올 때 예기치 않게 수정된 이미지를 받게 되므로 좋은 생각이 아닙니다. 이 상황에서는 대신 다른 새 태그를 푸시합니다.
# Build and push v1 docker build -t example-image:v1 . docker push example-image:v1 # v1 now refers to different image data # This is fine for local use (tags in the # registry are independent of your local tags). docker build -t example-image:v1 . # Don't do this - now the tag in the registry # has been changed too, which could negatively # impact existing users. docker push example-image:v1
태그 제거
컴퓨터로 가져온 이미지에서 태그를 제거할 수 있습니다. 사용 docker rmi 삭제하려는 태그를 지정하는 명령:
docker rmi example-image:1.1.0-apache
동일한 이미지 데이터를 참조하는 다른 모든 태그는 계속 사용할 수 있습니다. 참조된 이미지에 태그가 지정되지 않은 경우 Docker CLI는 이미지 데이터를 모두 삭제합니다. 이렇게 하면 명시적 제거 지침의 결과로 태그가 지정되지 않은 이미지가 생성되지 않습니다.
태그를 제거하면 레지스트리 URL이 포함된 태그를 참조하는 경우에도 로컬에만 영향을 줍니다.
# Does not remove the tag from the registry! docker rmi registry.example.com/example-image:latest
현재 레지스트리에서 특정 태그를 삭제할 수 없습니다. 이것은 태그 불변성의 원칙에 부합합니다. 콘텐츠를 푸시하면 다운스트림 소비자가 종속성으로 사용할 수 있으므로 Registry API는 태그 삭제 끝점을 생략합니다. 그러나 많은 타사 레지스트리 구현은 동등한 메커니즘을 제공합니다. 푸시된 태그를 삭제해야 하는 강력한 이유가 있는 경우 문서를 확인하는 것이 좋습니다.
요약
태그는 빌드 버전 및 포함된 종속성과 같은 주요 식별 정보로 Docker 이미지에 레이블을 지정하는 데 사용됩니다. 태그는 볼 수 있는 이미지 SHA ID보다 작업하기가 훨씬 간단합니다. docker images. 태그는 원격 레지스트리의 이미지와 상호 작용하기 위한 기본 메커니즘이기도 합니다.
로컬 시스템에서 고유한 태그를 관리할 수 있지만 변경 사항은 레지스트리 콘텐츠에 영향을 미치지 않습니다. 태그가 ~이다 변경 가능하므로 이 속성은 남용되어서는 안 되며 태그를 레지스트리에 푸시할 때 피하는 것이 가장 좋습니다. 이렇게 하면 원치 않는 주요 변경 사항으로부터 사용자를 보호할 수 있습니다.








