Docker 유효하지 않은 참조 형식

Docker Yuhyohaji Anh Eun Chamjo Hyeongsig



Docker 이미지 또는 Dockerfile로 작업할 때 '잘못된 참조 형식' 오류가 발생할 수 있습니다.

이 튜토리얼에서는 이 오류가 무엇을 의미하는지, 왜 발생하는지, Docker 사용 시 이를 해결하는 방법을 알아봅니다.

Docker의 이미지 참조란 무엇입니까?

Docker에서 이미지 참조는 Docker 레지스트리(Docker Hub) 또는 로컬 Docker 호스트 내에서 특정 Docker 이미지를 식별하고 찾는 방법을 나타냅니다.







기본적으로 이미지 참조는 두 가지 주요 구성 요소로 구성됩니다.



리포지토리 – 첫 번째 부분은 대상 이미지의 리포지토리를 정의합니다. Docker 이미지의 최상위 조직 단위로 주로 이미지를 관리하는 조직이나 개인을 나타내는 데 사용됩니다. 예를 들어 Microsoft/SQL-server라는 이미지를 찾을 수 있습니다. 이 경우 첫 번째 부분은 이미지를 유지하는 조직을 나타냅니다.



태그 – 이미지의 두 번째 부분은 저장소 내 이미지의 특정 버전 또는 변형과 연결된 레이블입니다. 이미지 태그는 동일한 이미지의 다양한 버전, 다양한 릴리스 또는 다양한 호환성을 나타낼 수 있습니다. 예를 들어, nginx:latest 이미지에서 최신 태그는 Nginx 이미지의 최신 버전을 나타냅니다.





Dockerfile 또는 docker 명령에서 이미지를 지정할 때 이미지 이름은 다음 명명 규칙을 따라야 합니다.

  • 저장소 이름은 소문자여야 합니다.
  • 저장소에는 레지스트리 내의 조직이나 그룹화를 나타내는 문자, 숫자, 하이픈(-), 밑줄(_) 또는 슬래시(/)도 포함될 수 있습니다.
  • 이미지 이름에는 공백 문자(공백 또는 탭)가 있어서는 안 됩니다.

Docker 잘못된 참조 형식

Dockerfile 또는 Docker 명령을 실행할 때 '잘못된 참조 형식' 오류가 발생하면 이름이 위 규칙을 준수하지 않았다는 의미입니다.



예는 다음과 같습니다.

$ 도커 풀 BusyBox

위 명령을 실행하면 다음과 같은 오류가 반환됩니다.

유효하지 않은 참조 형식: 저장소 이름은 소문자여야 합니다.

이 경우 이미지 이름은 항상 소문자여야 하므로 이미지 이름 형식이 잘못되었음을 알려줍니다.

Docker 잘못된 참조 형식 오류를 수정하는 방법

짐작할 수 있듯이 첫 번째 방법은 이미지 참조 형식이 올바른지 확인하는 것입니다. 여기에는 이미지 이름이 유효한지 확인하는 작업이 포함됩니다.

예를 들어 위 명령에서 이미지 이름을 다음과 같이 지정하여 오류를 수정할 수 있습니다.

$ sudo docker pull busybox:최신

이 경우 명령은 최신 버전의 Busybox 이미지를 가져와야 합니다.

방법 2 - 긴 Docker 명령 분할

다른 경우에는 긴 Docker 명령을 실행할 때 '잘못된 참조 형식' 오류가 발생할 수 있습니다.

이러한 경우 명령을 여러 줄로 나누는 것이 좋습니다. 명령 분할 방법은 쉘과 시스템에 따라 다릅니다.

  • 그러나 Bash 셸의 경우 여러 줄 이스케이프 문자나 백슬래시(\)를 사용하세요.
  • PowerShell의 경우 백틱 문자(`)를 사용할 수 있습니다.
  • 마지막으로 명령 프롬프트에 있는 경우 캐럿 문자를 ^로 사용할 수 있습니다.

예를 들어 Bash에서는 다음과 같이 명령을 실행합니다.

$ sudo 도커 빌드 \

-그것 \

비지박스 \

PowerShell에서는 다음과 같이 명령을 실행할 수 있습니다.

$ sudo 도커 빌드 `

-그것 `

비지박스 `

마지막으로 명령 프롬프트에 있는 경우 다음과 같이 명령을 사용하십시오.

$ sudo 도커 빌드 ^

-그것 ^

비지박스 ^

방법 3 - ${pwd} AND $(pwd) 경로

이 오류의 또 다른 일반적인 원인은 ${pwd} 변수를 사용할 때입니다. 이는 해당 명령을 실행하는 쉘 유형에 따라 충돌을 일으킬 수 있습니다.

PowerShell의 경우 $(pwd) 대신 ${pwd} 변수를 사용해야 합니다.

짐작할 수 있듯이 Bash의 경우 $(pwd)와 같이 중괄호 입력 대신 괄호 형식을 사용합니다.

결론

이 게시물에서는 Dockerfile 또는 docker 명령으로 작업할 때 '잘못된 참조 형식'이 발생하는 주요 원인에 대해 논의했습니다. 또한 이 문제를 해결하는 데 사용할 수 있는 세 가지 주요 방법도 살펴보았습니다.