0

googleクラウドコンテナレジストリの高度な認証方法のドキュメントでは、ドッカーcliでJSONキーファイルを使用してレジストリにログインする方法について説明しています私は、レジストリにログインするために、その同じkeyfile.jsonファイルを使用しようとしているが細かいdocker engine-apiと長命のJSONファイルを使用してGCRレジストリからプルできません

$]ドッキングウィンドウのログイン-u _json_key -p "$(猫keyfile.json)" https://gcr.io

に動作しますgolang docker/engine-apiライブラリを使用して、私はこれがfiを認証していると思われる作業用コードをいくつか持っています他のregistryiesにね、いつもUnmarshalファイルhere機能ImageBuildOptionsには、その後keyfile.jsonや作業を使用している場合しかし、働いていない

hereを消費することを渡すことにより、以下の構造

{ 
    "auths": { 
    "cr.whatever.com": { 
     "password": "PASSWORD", 
     "username": "registry" 
    } 
    } 
} 

でファイルを提供しますconfig.json ...

ドッカーのドキュメントによれば、ユーザー名とパスワードを持つJSONベース64エンコードオブジェクトは、hereのヘッダパーametersセクション。

私は任意のヘルプ/ヒントがはるかに高く評価されるだろう...

を首尾よく多くの幸運なしでドッキングウィンドウX-Registry-Configヘッダに消費することができますファイルを生成するために、複数のオプションを試してみました。

ありがとうございます!

答えて

0

私は、問題は 'config'がオーバーロードされた用語だと思います。 X-Registry-Configには、完全なドッカー設定ファイルではなく、options.AuthConfigsのJSONエンコード値のbase64エンコードバージョンが含まれているようです。あなただけhttps://gcr.ioのために認証する場合は、あなたのJSON入力する必要があります:

{ 
    "gcr.io": { 
    "username": "_json_key", 
    "password": "{contents of keyfile.json}" 
    } 
} 

それとも、あなたはドッカーのgolangのLIBSを使用するために喜んでいる場合:

import (
    "encoding/base64" 
    "encoding/json" 
    "net/http" 

    "github.com/docker/engine-api/types" 
) 

def addDockerAuthsHeader(keyfile_contents string, headers http.Header) error { 
    authConfigs := map[string]types.AuthConfig{ 
     "gcr.io": { 
      Username: "_json_key", 
      Password: keyfile_contents 
     } 
    } 

    buf, err := json.Marshal(authConfigs) 
    if err != nil { 
     return err 
    } 

    headers.Add("X-Registry-Config", base64.URLEncoding.EncodeToString(buf)) 

    return nil 
} 

keyfile_contentsがための課題として残されているの生成します読者:)

1

はあなたの助けjsandいただきありがとうございます、私は最終的に

次のように作業コード機能を起草します3210
関連する問題