Docker에서 가장 오해받는 부분은 최신 라벨일텐데요. 문자 그대로의 의미가 진정한 의미를 전달하지 못하기 때문에 혼란은 주로 이름 때문입니다. 이번 글에서는 최신 태그의 실제 기능과 올바르게 사용하는 방법에 대해 알아 보겠습니다.
이미지에 태그를 지정하는 방법에는 일반적으로 두 가지가 있습니다. docker tag 명령을 사용하거나 docker build를 실행할 때 -t를 사용하여 매개변수를 전달하는 것입니다. 두 경우 모두 매개변수는 일반적으로 저장소_이름:태그_이름 형식입니다(예: docker tag myrepo:mytag). 리포지토리가 Docker Hub에 업로드된 경우 리포지토리 이름 앞에는 Docker Hub 사용자 이름과 슬래시가 붙습니다(예: amouat/myrepo:mytag). 태그 부분에 매개변수가 추가되지 않은 경우(예: docker tag myrepo:1.0 myrepo) Docker는 자동으로 최신 태그를 제공합니다. 위의 내용은 이미 익히 알고 계시겠지만, 사실은 이 내용만 담겨 있을 뿐, 마법같은 내용은 전혀 없습니다.
이미지 태그가 "최신"이라고 해서 리소스 라이브러리에 있는 최신 이미지라는 의미는 아닙니다. 이 리소스 라이브러리의 소유자가 동의하는 경우에만 최신 레이블이 있는 이미지가 최신 이미지여야 합니다. 예를 들어, 오래된 이미지를 최신 태그가 있는 이미지로 쉽게 바꿀 수 있습니다. 예:
여기 최신태그가 붙은 이미지는 0.9버전의 이미지와 2주전의 이미지와 동일하지만, 1.0의 이미지는 1분전의 이미지입니다.
이 라벨이 많은 사람들을 혼란스럽게 하는 이유는 실제로 이해하기 더 쉽습니다. '그냥 최신 이미지를 가져오세요'라는 문장은 최신 태그가 있는 이미지를 가져오라는 뜻인가요, 아니면 최신 이미지를 가져오라는 뜻인가요? 이 둘이 같은가요? 저장소에 있는 최신 이미지인가요? 최신 안정 버전 이미지인가요, 아니면 최신 개발 버전 이미지인가요?
더 나쁜 것은 많은 사람들이 최신 라벨이 자동으로 업데이트될 것이라고 생각하는 것입니다. 즉, 최신 라벨이 포함된 이미지를 얻으면 Docker가 각 실행 전에 최신 버전인지 확인한다는 의미입니다. 이런 일은 절대 발생하지 않으며 다른 태그와 마찬가지로 Docker가 최신 버전의 이미지를 가져올지 여부를 수동으로 결정해야 합니다.
혼란은 여기서 끝나지 않습니다. 태그를 지정하지 않고 Docker가 저장소에서 이미지를 가져오면 어떻게 되나요? 모든 이미지를 얻을 것이라고 생각했다면 착각입니다. 최신 레이블이 있는 이미지만 얻을 것입니다. 모든 이미지를 얻으려면 -a 플래그를 추가해야 합니다. 최신 태그 없이 리소스 라이브러리에 대해 가져오기 작업을 수행하면 어떻게 되나요? 아래와 같이:
으아아아예기치 않게 Docker에서 오류 메시지가 표시되었습니다. 하지만 내 생각엔 당신이 무슨 일이 일어나고 있는지 모르는 것 같아요. 더 짜증나는 것 중 하나는 최신 태그가 다른 태그를 숨긴다는 것입니다. 최신 태그가 있는 데비안 이미지를 다운로드하고 싶다고 가정해 보세요. 어떤 버전인가요?
으아아아음, 모르겠어요. 실제로 버전 7.8 wheezy입니다.
도커는 이미지를 다운로드할 때 태그를 모두 넣어야 한다고 생각하는데 왜 이렇게 안 하는지 모르겠네요. 이제 일어나는 일은 사용자가 서버에 레이블이 지정되어 있기 때문에 동일한 이미지의 다른 버전을 가질 수 있다는 것입니다. 예: wheezy와 최신 버전이 모두 허브에서 업데이트되고 업데이트된 wheezy 버전 debian만 얻는 경우 허브에서 구별할 수 있더라도 내 wheezy 태그는 최신 태그의 로컬 버전보다 작습니다. .
위 내용은 최신의 의미와 이로 인해 발생하는 일반적인 오해의 대부분을 다루고 있습니다. 이 상황을 어떻게 개선할 수 있나요? 개인적으로는 최신 태그를 취소하고 default와 같이 문자 그대로의 의미에 가까운 단어로 대체할 수 있다고 생각합니다. 또한 이미지의 모든 태그를 동시에 업데이트하는 등 태그 생성 방식을 개선하는 작업도 보고 싶습니다. 동시에 저장소 관리자는 최신 태그를 주의하고 완전히 폐기할 것을 강력히 권장합니다.
위 내용은 Docker에서 최신 태그의 역할은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!