33
votes

Docker Build: n'a pas obtenu de token OAuth pour OpenJDK?

J'ai du mal à comprendre cette erreur lorsque j'essaie de construire un projet dans Docker:

### base jdk image ###
FROM openjdk:11 as setup
ENV USER sc_user
ENV HOME /home/$USER
ENV REPO $HOME/sc
RUN useradd -u 9999 $USER
COPY --chown=$USER build.gradle gradlew $REPO/
COPY --chown=$USER gradle $REPO/gradle
USER $USER
WORKDIR $REPO
RUN ./gradlew

FROM setup as tdd
ENTRYPOINT ["./gradlew", "-t", "test"]

FROM setup as debug-tdd
ENTRYPOINT ["./gradlew", "-t", "test", "-PjvmArgs=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005"]

### build jar ###
FROM setup as build
COPY --chown=$USER src $REPO/src
RUN ./gradlew clean test build generatePomFileForMavenJavaPublication

Que signifie cette erreur exactement? Suis-je en manquant des autorisations?

Pour référence, c'est à quoi ressemble mon dockerfile:

> [internal] load metadata for docker.io/library/openjdk:11:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to authorize: rpc error: code = Unknown desc = failed to fetch oauth token: unexpected status: 401 Unauthorized'


1 commentaires

Lorsque vous créez ou mettez à jour le docker AccessToken, cette erreur apparaîtra également. Après la connexion / -in dans le client, cela fonctionne à nouveau.


9 Réponses :


92
votes

Il semble que vous avez activé BuildKit dans votre configuration docker. BuildKit n'est pas encore stable et peut causer ce type de problèmes. Veuillez réessayer avec BuildKit désactivé.

Dans Linux, en utilisant les variables d'environnement:

"buildkit": false

Dans Windows et MacOS, démarrez l'application Docker Desktop, accédez à Paramètres , sélectionnez moteur docker et recherchez l'entrée existante:

"buildkit": true


5 commentaires

oui! "BuildKit": False me sauve! Merci beaucoup!


Je me cognais la tête à cause de cela. Merci beaucoup.


Et si BuildKit était activé intentionnellement? docker_buildkit = 1 build docker - Target artefact --output type = local, dest =. . . Comment corriger l'erreur? Cela pourrait-il être dû à la commande exécutée derrière un proxy?


Répondant à moi-même, après paramètres correctement le proxy dans Docker Desktop et dans les variables d'environnement du système, l'erreur a disparu pour moi.


@Adaind - Mon proxy est correctement réglé, mais je confirme que mon WGET | Curl ne fonctionne pas. Cela a quelque chose à voir avec le proxy. Tu as raison.



1
votes

mon cas:

Utilisation de Docker sur Windows 10 avec Linux WSL2.

L'image était pour Ubuntu: focal.

J'ai dû aller dans la section Dépanner du bureau Docker et utiliser l'option "Clean / Purge Data" . Auparavant, j'avais essayé la "réinitialisation aux défauts d'usine" qui m'ont donné une ligne supplémentaire dans l'erreur mais je ne l'ai pas corrigé. Alors peut-être que les deux sont nécessaires.

J'ai ensuite redémarré Docker et 'voilà'


0 commentaires

0
votes

Pour Windows, vous devez d'abord vous connecter sur Docker Desktop, alors seul cela fonctionnera.


0 commentaires

3
votes

Utilisation Docker Desktop sur * mac J'ai dû me connecter et me connecter et cela a fonctionné.


0 commentaires

5
votes

Si vous êtes confronté à ce problème après les modifications de l'abonnement à Docker le 31 août 2021, cela signifie que vous devez vous connecter à Docker Hub pour effectuer les opérations.

Utilisez la connexion Docker à partir de l'application Docker Desktop ou utilisez la commande docker de connexion à partir du terminal.

Si vous n'avez pas créé de compte Docker auparavant, vous pouvez vous inscrire à un plan personnel (gratuit) ici - https : //hub.docker.com/ ou utilisez le compte Docker que votre organisation vous a donné (si vous en avez un).

Les modifications de l'abonnement ont été mentionnées ici - https://docs.docker.com/subscription/


1 commentaires

Cela a fonctionné pour moi, j'ai dû me connecter à mon bureau Docker.



14
votes

J'ai également fait face à ce problème après avoir donné la mise à jour à une nouvelle version sur mon Mac. Cependant, j'ai résolu le problème après la connexion à partir du terminal.

Les commandes étaient:

docker login

Après cela, j'ai fourni le nom d'utilisateur et Mot de passe de Docker. Le problème a été résolu.


5 commentaires

Je me suis connecté à l'application docker et cela a fonctionné


Cela n'a pas fonctionné pour moi. Connexion réussie mais toujours à résoudre avec Frontend dockerfile.v0: Échec de la création de la définition LLB: Échec de l'autorisation: RPC Erreur: Code = inconnu desc = Échec de la récupération du jeton OAuth: Statut inattendu: 405 Méthode non autorisée


@Rohit vous utilisez sur Mac? Avez-vous une application Docker Desktop installée sur votre machine?


Oui aux deux .....


@Rohit Vous êtes-vous connecté à la fois dans l'application Docker Desktop et aussi à partir du terminal? Si oui, il peut y avoir un autre cas. Une fois, j'ai également fait face à ce genre de problème étrange en raison de mon fournisseur de services Internet. IDK Quel est votre cas?



1
votes

Tout d'abord, connectez-vous si vous êtes connecté et connectez-vous à nouveau: $ docker connexion $ docker connexion fournissez vos informations d'identification.

Si vous travaillez dans une sorte d'artefactoire Docker ou à l'intérieur de l'organisation $ docker connexion #link_of_the_artifactory_here


0 commentaires

1
votes

mon cas:

Utilisation de Docker sur Windows 10 avec Linux WSL2.

Je viens de faire Docker Logout et cela a fonctionné. Je me souviens quelque temps que j'avais fait Docker Login. Par conséquent, même pour les images publiques, Docker forçait l'authentification. La seule issue était de se connecter ou de faire la déconnexion de Docker. J'ai fait une connexion Docker et cela a fonctionné.


0 commentaires

-1
votes

Pour moi sur Windows, redémarrez simplement le docker, cela fonctionnera.


1 commentaires

Votre réponse pourrait être améliorée avec des informations de support supplémentaires. Veuillez modifier pour ajouter plus de détails, tels que des citations ou de la documentation, afin que d'autres puissent confirmer que votre réponse est correcte. Vous pouvez trouver plus d'informations sur la façon d'écrire de bonnes réponses dans le centre d'aide .