207 votes

Erreur Docker : format de référence invalide : le nom du dépôt doit être en minuscules.

J'ai rencontré 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 ?

J'ai déjà trouvé la solution après quelques efforts, je vais donc répondre à ma propre question afin de la documenter ici, car la solution n'apparaît 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 que rencontre Docker.

0 votes

La "référence" dans ce message d'erreur est l'identifiant d'une image, comme BMitch l'a expliqué dans sa réponse. Le format de la valeur que vous avez utilisée pour pointer vers une image n'est donc pas valide. Lisez l'explication complète de BMitch : stackoverflow.com/a/52818152/336694

221voto

BMitch Points 3744

Une "référence" dans Docker est un pointeur vers une image. Il peut s'agir d'un nom d'image, d'un identifiant d'image, de l'inclusion d'un serveur de registre dans le nom, de l'utilisation d'une balise sha256 pour épingler l'image, et de tout ce qui peut être utilisé pour pointer vers l'image que vous souhaitez exécuter.

Le site invalid reference format Le message d'erreur signifie que Docker ne peut pas convertir la chaîne que vous avez fournie en une image. Il peut s'agir d'un nom invalide, ou d'une erreur d'analyse plus tôt dans le processus de conversion. docker run si c'est ainsi que vous exécutez l'image. Avec un fichier de composition, si vous développez une variable dans le nom de l'image, cette variable peut ne pas se développer correctement.

Avec le docker run Cela est souvent dû au fait que les paramètres ne sont pas cités avec des espaces et que l'ordre de la ligne de commande est erroné. La ligne de commande est ordonnée comme suit :

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

L'erreur la plus courante dans le passage d'arguments à l'exécution est un mappage de volume qui développe un nom de chemin d'accès contenant un espace, et qui ne cite pas le chemin d'accès ou n'échappe pas l'espace. Par exemple

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

Et la solution est aussi simple que :

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

12 votes

"Avec la ligne de commande docker run, c'est souvent le résultat de ne pas citer les paramètres avec des espaces, et de se tromper dans l'ordre de la ligne de commande" C'était vraiment utile.

46voto

Z3d4s Points 147

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

Bien : docker build -t myfirstechoimage:0.1 .

Mauvais : docker build -t myFirstEchoImage:0.1 .

2 votes

J'utilise la dépendance maven "spotify" dans le projet SpringBoot pour construire l'image docker et depuis quelques heures, j'ai du mal à comprendre le problème. Le nom du projet (contenant des caractères majuscules) s'est avéré être le problème !

29voto

Colin Claverie Points 336

Avait un espace dans le répertoire de travail actuel et en utilisant le signe $(pwd) pour mapper les volumes. N'aime pas les espaces dans les noms de répertoires.

3 votes

Cela a résolu le problème pour moi ! J'ai emballé $(pwd) entre guillemets et ça a marché.

12voto

Heliodor Points 480

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

3 votes

Une autre cause commune trouvée en cherchant sur le web était que les gens ont des caractères d'espace dans leurs noms de répertoire lors du montage des volumes.

1 votes

Ça m'est arrivé pour une raison différente. Le docker multi-stage build à l'intérieur d'un Dockerfile comme nommé avec des lettres majuscules. Exemple : FROM bla:bla AS BUILD échoué. FROM bla:bla AS build était OK Thx !

10voto

josip.k Points 126

Dans mon cas, le problème résidait dans la disposition des paramètres. Au départ, j'avais --name après les paramètres d'environnement, puis le volume et attach_dbs et l'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 essentiellement --name suivi 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']}]"

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