Вход в docker завершается с ошибкой на сервере без установленного X11
Я пытаюсь развернуть конфигурацию докеров с изображениями в приватном реестре докеров.
Теперь, каждый раз, когда я выполняю docker login registry.example.com
, я получаю следующее сообщение об ошибке:
error getting credentials - err: exit status 1, out: 'Cannot autolaunch D-Bus without X11 $DISPLAY'
Единственное решение, которое я нашел для пользователей, не являющихся маконами, - сначала запустить export $(dbus-launch)
, но это ничего не изменило.
Я запускаю сервер Ubuntu и пытаюсь использовать пакет Ubuntu Docker и пакет Docker-CE.
Как войти в систему без сеанса X11?
Ответы
Ответ 1
Похоже, это потому, что по умолчанию используется исполняемый файл secretservice
который по какой-то причине, похоже, имеет некоторую зависимость от X11. Если вы установите и настроите pass
docker, вы будете использовать его, что, похоже, решит проблему.
В двух словах (с https://github.com/docker/compose/issues/6023)
sudo apt install gnupg2 pass
gpg2 --full-generate-key
Это генерирует вам ключ gpg2. После этого вы можете перечислить его с помощью
gpg2 -k
Скопируйте идентификатор ключа (из строки, помеченной [uid]
) и выполните
pass init "whatever key id you have"
Теперь docker login
должен работать.
На панели запуска есть несколько ошибок, связанных с этим:
https://bugs.launchpad.net/ubuntu/+source/golang-github-docker-docker-credential-helpers/+bug/1794307
https://bugs.launchpad.net/ubuntu/+source/docker-compose/+bug/1796119
Ответ 2
Это работает: sudo apt remove golang-docker-credential-helpers
Ответ 3
secretservice
требуется графический интерфейс. Вы можете использовать pass
без графического интерфейса.
К сожалению, документации по настройке Docker Credential Helpers в Docker не хватает. Вот подробное руководство по настройке pass
с помощью Docker (протестировано с Ubuntu 18.04):
1. Установите Docker Помощник по учетным данным для pass
# substitute with the latest version
url=https://github.com/docker/docker-credential-helpers/releases/download/v0.6.2/docker-credential-pass-v0.6.2-amd64.tar.gz
# download and untar the binary
wget $url
tar -xzvf $(basename $url)
# move the binary to a dir in your $PATH
sudo mv docker-credential-pass /usr/local/bin
# verify it works
docker-credential-pass list
2. Установите и настройте pass
apt install pass
# create a gpg2 key
gpg2 --gen-key
# if you have issues with lack of entropy, "apt install haveged" and try again
# create the password store using the gpg user id above
pass init $gpg_id
3. вход в докер
docker login
# You should not see any credentials stored in "auths" section.
# "credsStore": "pass" should have been automatically added.
cat ~/.docker/config.json
# verify credentials stored in 'pass' store now
pass
Ответ 4
Я решил эту проблему, удалив docker-compose
который был установлен из репозитория Ubuntu, и установил docker-compose
по официальной инструкции на https://docs.docker.com/compose/install/#install-compose.