10

Dockerリモート API を使用して、このように Docker ハブhttps://registry.hub.docker.com/u/myname/myappでホストされているプラ​​イベート リポジトリから Docker イメージをプルしようとしています。このようなPOSTリクエストで認証資格情報を指定する方法について、ドキュメントは明確ではありません

curl -XPOST -H "X-Registy-Auth: base64_encoded_authconfig_object" "http://localhost:4243/images/create?fromImage=myname/myapp"

これは、authconfig がどのように正確に生成されるかについても詳しく述べていません。

これは、base 64 でエンコードされた json を次のような構造で送信することについて説明しています。

{
  "index_url": {
    "username": "string",
    "password": "string",
    "email": "string",
    "serveraddress": "string"
  }
}

しかし、index_url と serveraddress とは何かを説明していません。彼らは

index_url = https://registry.hub.docker.com/u/myname/myapp
serveraddress = https://registry.hub.docker.com

上記の構成では 404 が表示されます。おそらく、レジストリ ハブのプライベート リポジトリが認識されていません。

~/.dockercfg の内容を base 64 でエンコードしてみました

{
  "https://index.docker.io/v1/": {
    "auth":"xxxxxxxxxxxxxxxxxxx==",
    "email":"myname@myemail.com"
  }
}

base64 でエンコードされた authconfig オブジェクトを生成し、上記の curl コマンドを機能させる方法を教えてください。

前もって感謝します

Docker のバージョン

Client version: 0.11.1
Client API version: 1.11
Go version (client): go1.2.1
Git commit (client): fb99f99
Server version: 0.11.1
Server API version: 1.11
Git commit (server): fb99f99
Go version (server): go1.2.1
4

2 に答える 2

12

同じ問題がありました。

資格情報を渡すために使用する「生の」AuthConfigオブジェクトは次のとおりです。

{
  "username":"your_registry_username_or_email",
  "パスワード":"*****"、
  "auth":"", // 空のままにします
  "email":"your@email.tld"
}

次に、 Base64を使用して「エンコード」する必要があります。

使用している言語はわかりませんでしたが、必要に応じて、この素晴らしいサイトでワンクリックでオブジェクトをエンコードできます。または、シェルから:

echo '{"username":"username","password":"*****", "auth":"","email":"your@email.tld"}' | base64


次に、エンコードされた値をヘッダーに渡します。

X-Registry-Auth: eyJ1c2VybmFtZSI6InlvdXJfcmVnaXN0cnlfdXNlcm5hbWVfb3JfZW1haWwiLCJwYXNzd29yZCI6IioqKioqIiwiYXV0aCI6IiIsImVtYWlsIjoieW91ckBlbWFpbC50bGQifQ==

curlとを使用した実際の例を次に示します。

  • r.getitlive.io で利用可能なレジストリ
  • 「192.168.60.10:8888」でリッスンする docker デーモン:
curl -X POST -d "" \
  -H "X レジストリ認証: eyJ1c2VybmFtZSI6InlvdXJfcmVnaXN0cnlfdXNlcm5hbWVfb3JfZW1haWwiLCJwYXNzd29yZCI6IioqKioqIiwiYXV0aCI6IiIsImVtYWlsIjoieW91ckBlbWFpbC50bGQifQ=="\
  「http://192.168.60.11:8888/images/create?fromImage=r.getitlive.io/cool/repo&tag=latest」

注 :serveraddress AuthConfig オブジェクトのフィールドにリモート レジストリ エンドポイント/URL を入力しても (まだ) 機能しませんでした。そのため、パラメーターにレジストリ ホストを追加していfromImage=ます。

于 2014-07-18T11:40:40.180 に答える
3

このマージされた docker プル リクエストから、X-Registry-Authヘッダーは base-64 でエンコードされた次の形式の json 文字列である必要があるようです。

{
  'username': string,
  'password': string,
  'email': string,
  'serverddress' : string
}

別の参照リンク

于 2015-01-06T17:57:15.763 に答える