[docker] Docker 오류 : 잘못된 참조 형식 : 저장소 이름은 소문자 여야합니다.

내 프로젝트 중 하나에서이 Docker 오류가 발생했습니다.

invalid reference format: repository name must be lowercase

이 일반 메시지의 다양한 원인은 무엇입니까?

나는 이미 약간의 노력 끝에 그것을 알아 냈기 때문에 웹 검색을 할 때 해결책이 즉시 나타나지 않고이 오류 메시지가 설명하지 않기 때문에 여기에 문서화하기 위해 내 질문에 답할 것입니다. Docker가 직면하는 직접적인 문제.



답변

docker의 “참조”는 이미지에 대한 포인터입니다. 이미지 이름, 이미지 ID, 이름에 레지스트리 서버 포함, sha256 태그를 사용하여 이미지 고정 및 실행하려는 이미지를 가리키는 데 사용할 수있는 기타 모든 것일 수 있습니다.

invalid reference format오류 메시지 수단 고정 표시기는 이미지에 제공 한 문자열을 변환 할 수 없습니다. 이것은 잘못된 이름이거나 docker run이미지를 실행하는 방법 인 경우 명령 줄 앞부분의 구문 분석 오류로 인한 것일 수 있습니다 . compose 파일에서 이미지 이름의 변수를 확장하면 해당 변수가 올바르게 확장되지 않을 수 있습니다.

docker run명령 줄을 사용하면 매개 변수를 공백으로 인용하지 않고 명령 줄의 순서를 잘못 인식하는 경우가 많습니다. 명령 줄은 다음과 같이 정렬됩니다.

docker ${args_to_docker} run ${args_to_run} image_ref ${cmd_to_exec}

args를 실행에 전달할 때 가장 일반적인 오류는 경로를 인용하거나 공백을 이스케이프하지 않고 공백을 포함하는 경로 이름을 확장하는 볼륨 매핑입니다. 예

docker run -v $(pwd):/data image_ref

그리고 수정은 다음과 같이 쉽습니다.

docker run -v "$(pwd):/data" image_ref


답변

Docker는 혼합 문자도 허용하지 않는다는 점을 강조하겠습니다 .

좋은:
docker build -t myfirstechoimage:0.1 .

나쁜:
docker build -t myFirstEchoImage:0.1 .


답변

제 경우에는 -emysql docker의 매개 변수 이전 이었습니다.

docker run --name mysql-standalone -e MYSQL_ROOT_PASSWORD=hello -e MYSQL_DATABASE=hello -e MYSQL_USER=hello -e MYSQL_PASSWORD=hello -d mysql:5.6

누락 된 공백이 있는지도 확인하십시오.


답변

현재 작업 디렉토리에 공간이 있고 $(pwd)볼륨을 매핑하는 데 사용됩니다. 디렉토리 이름의 공백을 좋아하지 않습니다.


답변

제 경우에는 이미지 이름에 docker-compose.yml대문자 가 포함되어 있습니다. repository대신 언급 된 오류 메시지 image가 문제를 설명하는 데 도움이되지 않았고 파악하는 데 시간이 걸렸습니다.


답변

제 경우에는 매개 변수 배열에 문제가있었습니다. 처음에는 --name환경 매개 변수 다음에 매개 변수가 있고 볼륨과 attach_dbs 매개 변수가 있고 명령 끝에 다음과 같은 이미지가 있습니다.

docker run -p 1433:1433 -e sa_password=myComplexPwd -e ACCEPT_EULA=Y --name sql1 -v c:/temp/:c:/temp/ attach_dbs="[{'dbName':'TestDb','dbFiles':['c:\\temp\\TestDb.mdf','c:\\temp\\TestDb_log.ldf']}]" -d microsoft/mssql-server-windows-express

아래와 같이 매개 변수를 다시 정렬하면 모든 것이 잘 작동했습니다 (기본적으로 --name매개 변수 뒤에 이미지 이름을 넣음 ).

docker run -d -p 1433:1433 -e sa_password=myComplexPwd -e ACCEPT_EULA=Y --name sql1 microsoft/mssql-server-windows-express -v C:/temp/:C:/temp/ attach_dbs="[{'dbName':'TestDb','dbFiles':['C:\\temp\\TestDb.mdf','C:\\temp\\TestDb_log.ldf']}]"


답변

MacOS에서 iCloud 드라이브로 작업 할 때 $ PWD에는 “Mobile Documents”디렉토리가 포함됩니다. 공간이 마음에 들지 않는 것 같습니다!

해결 방법으로 내 프로젝트 폴더 경로에 공간이없는 로컬 드라이브에 프로젝트를 복사했습니다.

나는 당신이 iCloud의 기본 경로를 changnig 돌아 다니는 방법을 보지 못합니다. ~/Library/Mobile Documents/com~apple~CloudDocs

“Mobile Documents”의 경로에있는 공간은 docker run이 좋아하지 않는 것 같습니다.