web-dev-qa-db-ja.com

X11がインストールされていないサーバーでdockerログインが失敗する

プライベートDockerレジストリにイメージを含むDocker構成を展開しようとしています。

これで、_docker login registry.example.com_を実行するたびに、次のエラーメッセージが表示されます。

_error getting credentials - err: exit status 1, out: `Cannot autolaunch D-Bus without X11 $DISPLAY`
_

非macosユーザーのために私が見つけた唯一の解決策は、最初にexport $(dbus-launch)を実行することでしたが、それは何も変更しませんでした。

私はUbuntuサーバーを実行していて、Ubuntu DockerパッケージとDocker-CEパッケージの両方を試しました。

X11セッションなしでログインするにはどうすればよいですか?

30
msrd0

これは、何らかの理由で何らかのX11依存関係があると思われるsecretservice実行可能ファイルをデフォルトで使用するためです。 passをインストールして設定すると、Dockerは代わりにそれを使用して問題を解決するようです。

一言で言えば( https://github.com/docker/compose/issues/602 から)

Sudo apt install gnupg2 pass 
gpg2 --full-generate-key

これにより、gpg2キーが生成されます。それが終わったら、あなたはそれをリストすることができます

gpg2 -k

[uid]というラベルの行から)キーIDをコピーして、

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

7
ChrisWue

Ubuntu 18.04で私を助けたのは:

  1. @oberstetの投稿の手順に従い、golangヘルパーをアンインストールする
  2. ヘルパーのアンインストール後にログインを実行する
  3. Sudo apt-get install docker経由でdockerを再インストールする
  4. Sudo docker login経由で再度ログインする
1
Stanislav

問題のパッケージを削除できますgolang-docker-credential-helpersすべて削除せずにdocker-compose

以下は、X11がインストールされていないサーバーで動作しました。

dpkg -r --ignore-depends=golang-docker-credential-helpers golang-docker-credential-helpers

その後

echo 'foo' | docker login mydockerrepo.com -u dockeruser --password-stdin

ソース:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=910823#39

1
dvanrensburg

https://github.com/docker/docker-credential-helpers/issues/105 のコメントで見つけた、すでに投稿されているものよりもはるかに簡単な答えがあります。

解決策は、docker-credential-secretserviceの名前を変更することです。例:mv /usr/bin/docker-credential-secretservice /usr/bin/docker-credential-secretservice.broken

これを実行すると、docker-composeがインストールされているかどうかに関係なく、dockerログインが機能します。他のパッケージの追加または削除は必要ありません。

1

この問題は、Ubuntuリポジトリからインストールされたdocker-composeをアンインストールし、_ https://docs.docker.com/compose/install/#installの公式指示に従ってdocker-composeをインストールすることで解決しました。 -compose

0
Oleg Neumyvakin