Сборка Docker: не удалось получить токен oauth для openjdk?

У меня возникли проблемы с пониманием этой ошибки при попытке создать проект в 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'

Что именно означает эта ошибка? Я пропускаю разрешения?

Для справки, вот как выглядит мой Dockerfile:

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

Эта ошибка также появится при создании или обновлении Docker AccessToken. После выхода/входа в клиент он снова работает.

Peter Kirschner 02.08.2021 06:14
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
39
1
44 014
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Ответ принят как подходящий

Похоже, у вас включен BuildKit в вашей конфигурации докера. BuildKit может вызвать такие проблемы. Пожалуйста, попробуйте еще раз с отключенным BuildKit.

В Linux с использованием переменных среды:

export DOCKER_BUILDKIT=0
export COMPOSE_DOCKER_CLI_BUILD=0

В Windows и macOS запустите приложение Docker Desktop, перейдите в «Настройки», выберите «Docker Engine» и найдите существующую запись:

"buildkit": true

Измените эту запись, чтобы отключить buildkit:

"buildkit": false

Затем нажмите «Применить и перезапустить» и повторите попытку.

да! "buildkit": ложь спасает меня! Большое спасибо!

Steve Zhang 08.01.2021 17:33

Я стучал головой из-за этого. Большое спасибо.

Rahul Bhooteshwar 13.01.2021 17:21

Что, если BUILDKIT был включен намеренно? DOCKER_BUILDKIT=1 docker build --target artifact --output type=local,dest=. .. Как исправить ошибку? Может ли это быть связано с тем, что команда выполняется за прокси?

AlainD. 15.04.2021 11:42

Отвечая себе, после правильной настройки прокси в Docker Desktop и в переменных системной среды ошибка у меня исчезла.

AlainD. 15.04.2021 11:58

@AdainD - мой прокси настроен правильно, но я подтверждаю, что мой wget | завиток не работает. Это как-то связано с прокси. Ты прав.

Peter 28.10.2021 20:05

Ответ изменен, так как BuildKit теперь действительно стабилен, не всегда хорошее решение, чтобы просто отключить его. Повторный вход должен решить эту проблему.

slhck 14.11.2022 13:53

Это помогло моему коллеге 'buildkit': false в windows10 за прокси компании. Большое спасибо!

Gwang-Jin Kim 14.04.2023 15:45

после изменения buildkit на false мой рабочий стол docker разбился

mohamad soltani nezamabadi 21.05.2023 10:06

Мое дело:

Использование Docker в Windows 10 с Linux WSL2.

Образ был для ubuntu:focal.

Мне пришлось перейти в раздел «Устранение неполадок» на рабочем столе докера и использовать опцию «Очистить/очистить данные». Ранее я пробовал «Восстановить заводские настройки по умолчанию», что дало мне дополнительную строку в ошибке, но не исправило ее. Так что, возможно, оба нужны.

Затем я перезапустил Docker и «Вуаля».

Для Windows вам нужно сначала войти в систему на рабочем столе Docker, и только тогда он будет работать.

Используя Docker Desktop на *MAC, мне пришлось выйти из системы и войти снова, и это сработало.

Если вы столкнулись с этой проблемой после изменения подписки на Docker 31 августа 2021 года, это означает, что вам необходимо войти в Docker Hub для выполнения операций.

Либо используйте вход в докер из настольного приложения докера, либо используйте команду входа в докер из терминала.

Если вы еще не создали учетную запись docker, вы можете подписаться на личный (бесплатный) план здесь - https://hub.docker.com/ или использовать учетную запись docker, которую вам предоставила ваша организация (если вы Имеется).

Здесь упоминались изменения в подписке - https://docs.docker.com/subscription/

Это сработало для меня, мне пришлось войти на рабочий стол докера.

Mabel Oza 15.01.2022 22:48

Я также столкнулся с этой проблемой после обновления до новой версии Docker на моем Mac. Однако я решил проблему после повторного входа в систему с терминала.

Команда была:

docker login

После этого мне пришлось указать имя пользователя и пароль для Docker Hub. Проблема была исправлена.

Обратите внимание, что если вы используете собственный реестр, вместо этого вам нужно запустить docker login <registry>.

Я вошел в приложение Docker, и это сработало

thisshri 09.11.2021 20:17

Это не сработало для меня. Успешный вход в систему, но по-прежнему не удается решить с помощью внешнего интерфейса dockerfile.v0: не удалось создать определение LLB: не удалось авторизоваться: ошибка rpc: код = неизвестное описание = не удалось получить токен oauth: непредвиденный статус: 405 Метод не разрешен

Rohit 16.05.2022 19:23

@Rohit, который вы используете на Mac? На вашем компьютере установлено настольное приложение Docker?

Zakaria 19.05.2022 09:00

Да обоим.....

Rohit 20.05.2022 10:38

@Rohit, вы вошли в систему как в настольном приложении Docker, так и в терминале? Если да, то может быть и другой случай. Однажды я также столкнулся с такой странной проблемой из-за моего интернет-провайдера. ИДК, в чем твой случай?

Zakaria 22.05.2022 07:13

сначала выйдите из системы, если вы вошли в систему, и войдите снова: $ docker logout$ docker login укажите свои учетные данные.

Если вы работаете в какой-то докерской мастерской или внутри организации $ docker login #link_of_the_artifactory_here

Мое дело:

Использование Docker в Windows 10 с Linux WSL2.

Я просто сделал docker logout и это сработало. Я помню, как когда-то назад я выполнил вход в докер. Следовательно, даже для общедоступных изображений докер принудительно выполнял аутентификацию. Единственным выходом было либо снова войти в систему, либо выйти из системы Docker. Я сделал выход из докера, и это сработало.

Для меня в Windows просто перезапустите докер, он будет работать.

Другие вопросы по теме