48 votes

Erreur Docker: format de référence non valide: le nom du référentiel doit être en minuscule

Couru dans cette erreur Docker avec l'un de mes projets:

invalid reference format: repository name must be lowercase

Quelles sont les différentes causes de ce message générique?

Je l'ai déjà compris après quelques efforts, alors je vais répondre à ma propre question afin de la documenter ici car la solution ne se présente pas immédiatement lors d'une recherche sur le Web et aussi parce que ce message d'erreur ne décrit pas le problème direct rencontré par Docker.

36voto

BMitch Points 3744

Une "référence" dans le menu fixe est un pointeur vers une image. Il peut être une image, un nom, un IDENTIFIANT de l'image, inclure un registre de serveur dans le nom, utilisez un sha256 tag broches de l'image, et toute autre chose qui peut être utilisé pour pointer vers l'image que vous souhaitez exécuter.

L' invalid reference format message d'erreur signifie que le panneau ne peut pas convertir la chaîne de caractères que vous avez fournies à une image. Ce peut être un nom valide, ou il peut être d'une erreur d'analyse plus tôt dans l' docker run de la ligne de commande si c'est la façon dont vous exécutez l'image. Avec un fichier composer, si vous développez une variable dans le nom de l'image, cette variable peut ne pas être en expansion correctement.

Avec l' docker run de la ligne de commande, ce qui est souvent le résultat de ne pas citer les paramètres avec des espaces, et de confondre l'ordre de la ligne de commande. La ligne de commande est ordonné que:

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

L'erreur la plus commune dans le passage d'arguments pour que l'exécution est d'un volume de cartographie de l'expansion d'un nom de chemin d'accès qui comprend un espace, et ne pas citer le chemin d'accès ou s'échapper dans l'espace. E. g.

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

Et la solution est aussi simple que:

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

9voto

Colin Claverie Points 336

avait un espace dans le répertoire de travail en cours et utilisait $(pwd) pour mapper des volumes. N'aime pas les espaces dans les noms de répertoires.

8voto

josip.k Points 126

Dans mon cas, le problème était dans l'arrangement des paramètres. Initialement, j'avais les paramètres --name après les paramètres d'environnement, puis les paramètres volume et attach_dbs , ainsi qu'une image à la fin de la commande, comme ci-dessous.

 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
 

Après avoir réarrangé les paramètres, comme ci-dessous, tout a bien fonctionné (en mettant fondamentalement les paramètres --name suivis du nom de l’image).

 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']}]"
 

7voto

Z3d4s Points 147

Permettez-moi de souligner que Docker n'autorise même pas les caractères mélangés.

Bon: docker build -t myfirstechoimage:0.1 .

Mauvais: docker build -t myFirstEchoImage:0.1 .

6voto

Heliodor Points 480

Dans mon cas, le nom de l'image défini en docker-compose.yml contenait des lettres majuscules. Le fait que le message d'erreur mentionné repository au lieu de image n'aide pas à décrire le problème et qu'il a fallu un certain temps pour le résoudre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X