Вход в 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.