Docker build: falló en conseguir oauth token para openjdk?

Estoy teniendo problemas para entender este error cuando intento construir un proyecto en Docker:

> [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'

¿Qué significa este error exactamente? ¿Me estoy perdiendo permisos?

Para referencia, esto es lo que mi Dockerfile parece:

### 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

Pregunta hecha hace 3 años, 2 meses, 5 días - Por techtrailblazer


11 Respuestas:

  • Parece que tienes a BuildKit habilitado en tu configuración de docker. Build El kit puede causar este tipo de problemas. Pruébalo de nuevo con BuildKit deshabilitado.

    En Linux, utilizando variables ambientales:

    export DOCKER_BUILDKIT=0
    export COMPOSE_DOCKER_CLI_BUILD=0
    

    En Windows y macOS, inicie la aplicación Docker Desktop, vaya a Ajustes, seleccione Docker Engine y buscar la entrada existente:

    "buildkit": true
    

    Cambia esta entrada para deshabilitar buildkit:

    "buildkit": false
    

    Luego haga clic en Apply & Restart y intentarlo de nuevo.

    Respondida el Dec 18, 2020 a las 17:13 - por binarybard

    Votos positivos: 0 | Votos negativos: 0

  • También he enfrentado este problema después de actualizar a una nueva versión Docker en mi Mac. Sin embargo, he resuelto el problema después de entrar de nuevo en la terminal.

    El comando era:

    docker login
    

    Después de eso tuve que proporcionar nombre de usuario y contraseña para Docker Hub. El problema estaba arreglado.

    Tenga en cuenta que si utiliza un registro personalizado, debe ejecutar docker login en lugar de eso.

    Respondida el Dec 18, 2020 a las 17:23 - por techscribe

    Votos positivos: 0 | Votos negativos: 0

  • Uso Docker Desktop *MAC Tuve que firmar y registrarme y funcionó.

    Respondida el Dec 18, 2020 a las 17:32 - por bytebard

    Votos positivos: 0 | Votos negativos: 0

  • Si se enfrenta a este problema después de que la suscripción cambie a docker el 31 de agosto de 2021, entonces significa que necesita iniciar sesión en el centro de docker para realizar las operaciones.

    O use docker login desde la aplicación de escritorio docker o utilice el comando de inicio de sesión de docker desde la terminal.

    Si no ha creado una cuenta de docker antes de entonces puede registrarse para un plan personal (gratuito) aquí - https://hub.docker.com/ o utilizar la cuenta de taquilla que su organización le ha dado (si tiene uno).

    Los cambios a la suscripción se mencionaron aquí - https://docs.docker.com/subscription/

    Respondida el Dec 18, 2020 a las 17:38 - por byteninja8245

    Votos positivos: 0 | Votos negativos: 0

  • primero, regístrese si está conectado y vuelva a iniciar sesión: $ docker logout $ docker login proporcionar sus credenciales.

    Si usted está trabajando en algún tipo de docker artifactory o dentro de la organización $ docker login #link_of_the_artifactory_here

    Respondida el Dec 18, 2020 a las 17:45 - por cyberjedi

    Votos positivos: 0 | Votos negativos: 0

  • Mi caso:

    Utilizando Docker en Windows 10 con Linux WSL2.

    La imagen era para ubuntu:focal.

    Tuve que ir a la Solución de problemas sección del escritorio del muelle y utilizar el "Clean / Purge data" Opción. Anteriormente había probado "Reinicie a los defectos de fábrica" que me dio una línea extra en el error, pero no lo solucionó. Así que tal vez ambos sean necesarios.

    Luego reiniciaba Docker y 'Voilà '

    Respondida el Dec 18, 2020 a las 17:53 - por codecraftsman32c9

    Votos positivos: 0 | Votos negativos: 0

  • Mi caso:

    Utilizando Docker en Windows 10 con Linux WSL2.

    Acabo de hacerlo. docker logout y funcionó. Recuerdo que en algún momento había hecho la entrada de Docker. Por lo tanto, incluso para las imágenes públicas docker estaba forzando la autenticación. La única forma de salir era iniciar sesión o hacer el logo docker. Hice el logo de Docker y funcionó.

    Respondida el Dec 18, 2020 a las 18:02 - por bitwisewizard

    Votos positivos: 0 | Votos negativos: 0

  • Para Windows, Necesitas iniciar sesión en Docker Desktop y sólo funcionará.

    Respondida el Dec 18, 2020 a las 18:09 - por codeartisan

    Votos positivos: 0 | Votos negativos: 0

  • Para mí en Windows, simplemente reinicie el docker que funcionará.

    Respondida el Dec 18, 2020 a las 18:18 - por techtrailblazer8d2c

    Votos positivos: 0 | Votos negativos: 0

  • El error failed to fetch oauth token: unexpected status: 401 Unauthorized indica que Docker está teniendo problemas para autenticar con el registro de Docker Hub para poder descargar la imagen openjdk:11. Este error suele ocurrir cuando no se ha iniciado sesión en Docker Hub en la máquina donde estás intentando construir la imagen.

    Para resolver este problema, puedes ejecutar el comando docker login en tu terminal e ingresar tus credenciales de Docker Hub para iniciar sesión. Luego de esto, intenta construir tu imagen Docker nuevamente y debería funcionar sin problemas.

    Si sigues experimentando este error incluso después de iniciar sesión en Docker Hub, puedes intentar limpiar las credenciales almacenadas de Docker ejecutando el comando docker logout y luego volviendo a iniciar sesión con docker login.

    Una vez que hayas iniciado sesión correctamente en Docker Hub, el error de autorización debería desaparecer y podrás construir tu imagen Docker sin problemas.

    Respondida el Dec 19, 2020 a las 17:15 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El error que estás experimentando:

    
    rpc error: code = Unknown desc = failed to fetch oauth token: unexpected status: 401 Unauthorized
    

    indica que Docker no puede obtener un token de autenticación para acceder al registro de Docker donde se almacena la imagen openjdk:11. Esto puede ocurrir por varias razones:

    1. Credenciales incorrectas:

    Asegúrate de haber iniciado sesión en Docker con las credenciales correctas. Ejecuta docker login para iniciar sesión en el registro.

    2. Registro privado:

    Si la imagen openjdk:11 está alojada en un registro privado, debes asegurarte de tener permisos para acceder a ella. Agrega el registro privado a tu Dockerfile utilizando la instrucción registry.

    3. Problemas de red:

    Verifica tu conexión a Internet. Asegúrate de que tu firewall no esté bloqueando el acceso a Docker.

    4. Caché de Docker corrupta:

    Intenta eliminar la caché de Docker ejecutando docker system prune.

    Dockerfile actualizado:

    Una vez que hayas solucionado el problema de autenticación, asegúrate de que tu Dockerfile esté actualizado. El Dockerfile que proporcionaste tiene dos problemas:

    • La instrucción `USER` en la etapa `build` debe escribirse como `USER $USER`.
    • La imagen base de la etapa `debug-tdd` debería ser `tdd` en lugar de `setup`.

    Aquí tienes un Dockerfile actualizado y corregido:

    
    

    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 tdd as tdd ENTRYPOINT ["./gradlew", "-t", "test"] FROM tdd 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 USER $USER RUN ./gradlew clean test build generatePomFileForMavenJavaPublication

    Respondida el Dec 19, 2020 a las 17:20 - por Gemini

    Votos positivos: 0 | Votos negativos: 0