Dockerアカウントにログインできない


110
OS: Ubuntu 18.04 Server
Docker 18.3 CE

PuTTY SSHセッションを使用して、Windows 10ラップトップからサーバーにログオンしています。

ローカルのWindowsラップトップにはDockerがないので、すべての作業はリモートサーバーで行われます。

ターミナルセッションを使用して、リモートサーバーですべてのDockerコマンドを実行できます。

ただし、イメージをDockerハブに保存しようとするとき、ログインしようとすると、次を使用します。

docker login

次のエラーメッセージが表示されます。

error getting credentials - err: exit status 1, out: `GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.secrets was not provided by any .service files`

リモートサーバーでイメージを作成したときに、エラーメッセージが表示されませんでした。

リモートサーバーの関連するホームディレクトリに.dockerフォルダーも表示されません。何か案は?


docker loginLXD / LXCコンテナー内から実行しようとしているときに、私は今日やや似たような問題に遭遇しました。.docker/config.jsonホストから自分で$HOME/.docker/作成したLXD / LXCコンテナ内のディレクトリにコピーすることで解決した特定の問題。現在、別の問題を解決しようとしていますが、まだこれを試してみたかどうかを確認したいですか?
code_dredd 2018年

いいえ、Windowsをあきらめました。明日、新しいラップトップを入手します。デュアルブートとしてUbuntu 18をインストールします。
EastsideDev 2018年

この問題をここgithub.com/docker/cli/issues/1136で公開しました。彼らがこれに対する解決策を見つけた場合、私はここに投稿します。
thishandp7

回答:


195

2019-04-07を編集:

これが現在選択されている回答であるため、以下の@Anish Vargheseソリューションが最も簡単であると思われるので、まず試してみてください。gnupg2をインストールしてパッケージを渡すだけです。

sudo apt install gnupg2 pass

それが機能しない場合は、ここで私の元の解決策を試すことができます:

同じ問題がありました。bak2trakの回答は機能しましたが、資格情報がクリアテキストで保存されました。パスワードストアに保管する場合の解決策は次のとおりです。

1)https://github.com/docker/docker-credential-helpers/releasesからdocker-credential-passをダウンロードします

2) tar -xvf docker-credential-pass.tar.gz

3) chmod u+x docker-credential-pass

4) mv docker-credential-pass /usr/bin

5)docker-credential-passをセットアップする必要があります(次の手順はhttps://github.com/docker/docker-docker-credential-helpers/issues/102#issuecomment-388634452に基づいています

5.1)gpgをインストールしてパス(apt-get install gpg pass

5.2)gpg --generate-key、情報を入力します。次のようなものが表示されます。

pub   rsa3072 2018-10-07 [SC] [expires: 2020-10-06]
      1234567890ABCDEF1234567890ABCDEF12345678

123 ...行をコピーします

5.3)pass init 1234567890ABCDEF1234567890ABCDEF12345678(貼り付け)

5.4)pass insert docker-credential-helpers/docker-pass-initialized-checkそして、次のパスワードを設定します。

5.5)pass show docker-credential-helpers/docker-pass-initialized-check。パスが初期化されているはずです。

5.6) docker-credential-pass list

6)〜/ .docker / config.jsonを作成します:

{
"credsStore": "pass"
}

7)Dockerログインが機能するようになりました

注:将来の実行で「パスストアが初期化されていません」というエラーが発生した場合は、次のコマンドを実行してください(パスストアがメモリに再ロードされます)。

pass show docker-credential-helpers/docker-pass-initialized-check

パスワードを尋ね、パスストアを初期化します。

これは、このディスカッションに基づいていますhttps : //github.com/moby/moby/issues/25169#issuecomment-431129898


私のために働いていませんでした。docker loginを実行しようとすると、「資格情報の取得エラー
-err

パスをアンインストールして.password-storeフォルダーを削除した後、もう一度始めました。今は良くなっているようです。ありがとう。
GlacialSpoon 2018年

1
@ Jean-Phillipe浄土院、ありがとう。これを定期的に呼び出さなければならないようです。そうしないと、ログイン呼び出しで資格情報を見つけることができません。私はこれがgpgキャッシュの期限切れと関係があるかもしれないことを読んで、「パスショー」がそれを目覚めさせます。サーバーが再起動したら、動作する前に「pass insert」の手順に戻る必要があります。あまり便利ではありませんが、先に進むことができます。
GlacialSpoon 2018年

1
以下のAnish Vargheseの回答を確認してください。これが最も簡単でクリーンなソリューションのようです。
Aurelien 2018年

1
@JoePhillips:同意します。彼のソリューションを引用と統合しました。
Jean-Philippe

200

次のパッケージをubuntuにインストールすると問題が解決しました

sudo apt install gnupg2 pass

私のために仕事はしませんでしたが、また、GPGをインストールすることは働いていた:「gnupg2パスのgpgをaptのインストール須藤」
イェルク・ベイヤー

6
ubuntu 18.04でも私のために働きました。私は唯一の発行sudo apt install pass、残りはその依存関係として来た
アレックス・

4
Unbuntu 18.04で私のために働いた。
ギル・ベイツ

5
問題の根源は何ですか?なぜgnupg2 pass問題を解決するのですか?
Skyfall

1
ubuntu 19.04でも私のために働きました
Ammad Khalid

41

私はubuntu 18.08で同じ問題に直面しましたが、これは最終的に一時的な解決策として私にとってうまくいきました。

home/.docker/一部のソリューションがファイルを作成し、config.jsonそれにデフォルトの資格情報を書き込むように提案したため、私はこのフォルダーを作成しました。

{
    "credsStore": "pass"
}
  • このファイルを削除しましたconfig.json
  • 次に、このファイルを取得しないようにdocker-credential-secretserviceを別の名前に変更しました。

    sudo mv / usr / bin / docker-credential-secretservice / usr / bin / docker-credential-secretservice_x

そしてそれはうまくいった!


2
@Renrhaf初ドッキングウィンドウ、それはGNOMEキーチェーンに検索し、OS-XでOSX-キーホルダーここで、「合格」のデフォルトルックスによります。見つからない場合は、を探しorg.freedesktop.secretsます。ubuntu 18では見つかりません(いくつかの問題)。それ(docker-credential-secretservice)の名前を別の名前に変更すると、フォールバックしてそれ自体で構成ファイルが作成されます。home/ .dockerフォルダーで、config.jsonファイルが1つ作成されているはずです。
bak2trak

私はこの問題に遭遇し、この方法で解決しました-一種。私docker-credential-secretserviceはGHからインストールし、~/.docker/config.json上記の内容でを作成してからログインしようとしました。エラーが発生しました。次に、.dockerフォルダーconfig.json/usr/bin/docker-credential-secretservice実行可能ファイルを削除し、docker login再度実行して成功しました
Andy

1
同じ問題を抱えている人へ:config.json削除することを忘れないでください。私はほとんどあきらめましたが、config.jsonを削除した後、最後の瞬間にうまくいきました。
sr9yar 2018

2
私にとっては、アンインストールdocker-composeしてからsudo mv /usr/bin/docker-credential-secretservice /usr/bin/docker-credential-secretservice_x名前変更を実行しましたが、うまくいきました。誰が何docker-credential-secretserviceに使用されているか知っていますか?
user1032613

1
このソリューションは私にとってはうまくいきましたが、資格情報ベース64エンコードを保存します。パスを使用するソリューションを以下に投稿しました。stackoverflow.com/questions/50151833/...
ジャン=フィリップJodoin

4

apt install gnupg2 passが機能しない場合は、golang-docker-credential-helpersパッケージをインストールすることもできます


4

これも役立つかもしれませんが、少なくともUbuntu 20.04では効果がありました。

wget https://github.com/docker/docker-credential-helpers/releases/download/v0.6.3/docker-credential-secretservice-v0.6.3-amd64.tar.gz && tar -xf docker-credential-secretservice-v0.6.3-amd64.tar.gz && chmod +x docker-credential-secretservice && mv docker-credential-secretservice /usr/local/bin/

https://hackernoon.com/getting-rid-of-docker-plain-text-credentials-88309e07640d   https://github.com/docker/docker-credential-helpers/releases


2

私にとってはdocker push失敗しました

denied: requested access to the resource is denied

...だから私はしたかっdocker loginたが、資格情報を入力した後に次のものを得た:

Remote error from secret service:
  org.freedesktop.DBus.Error.UnknownMethod:
  No such interface 'org.freedesktop.Secret.Collection' on object at path
  /org/freedesktop/secrets/collection/login

Error saving credentials:
  error storing credentials - err: exit status 1, out:
  No such interface 'org.freedesktop.Secret.Collection' on object at path
  /org/freedesktop/secrets/collection/login

幸い、システムを変更せずにログインできる別のマシンを使用できました。~/.docker/config.json... の内容をコピーしました

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "<some-hash-value>"
                }
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.09.2 (linux)"
        }
}

...他のマシンにdocker push働きました。


1

私にとって最も簡単な解決策は、ユーザーのホームディレクトリ内の.dockerディレクトリの下にconfig.jsonファイルを作成することでした。

/home/.docker/config.json

次に、このファイルのコンテンツを、Dockerハブにログインできたサーバーからコピーしました。

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "SOMEVALUE"
                }
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.06.1-ce (linux)"
        }

}

運用サーバーでは簡単に実行できないパッケージをインストールまたは更新する必要がないため、これは簡単な回避策です。


残念ながら、これは私にとって有効な唯一の回避策です...少なくとも、アカウントのパスワードの代わりにアクセストークンを使用することは可能です。
ジョージAristy

パス「〜/ home / .docker / config.json」はとても間違っているようです。たぶん「〜/ .docker / config.json」を意味していた
BlakBat

パスを更新してくれてありがとう。
Kashyap氏

0

まあ、あなたはすでに解決策を読んでいますが、実際にはgnupg2がUbuntu 18以降apt upgradeではデフォルトでインストールされていません。


0

答えに続いて、いくつかの問題がありました。

  1. 鍵の生成はエントロピーで動かなくなっていました(ステップ5.2)。

幸い、修正は簡単で、パッケージをインストールするだけで済みます。httpsrng-tools//stackoverflow.com/a/32941065

  1. 上でpass init <key>(ステップ5.3)エラーがgpg: decryption failed: No secret key現れました。

実際、この問題は、秘密鍵がroot権限に制限されていることが原因です。

.gnupg .password-storeユーザーのホームディレクトリにあるフォルダの所有権を変更しました。

次に、「安全でない所有権」の警告を回避するためにdirmngrをリロードしました。

gpgconf --kill dirmngr

すべてを実行したくない場合は、回答のすべてのコマンドをroot / sudoとして実行できます。


0

以下を作成することで解決しました:

AWS_CONFIG=$AWS_DIR/config
AWS_CREDENTIALS=$AWS_DIR/credentials
mkdir -p $AWS_DIR

0

簡単な解決策:"credsStore": "secretservice"〜/ .docker / config.jsonから削除するだけです


-3

ubuntuに以下のパッケージをインストールします

sudo apt install gnupg2 pass

これは私のために働いています。


1
これは、同じまたはより良い内容の以前の回答に追加を提供しません。
カールリヒター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.