11

shippable を使用してプライベート docker イメージを Google Container Registry にプッシュし、ラップトップのローカルまたは Google Compute Engine のインスタンス内からプルしたいと考えています。

コマンドgcloud preview docker pull gcr.io/projectID/image-nameが機能することはわかっていますが、イメージをプルする必要があるすべてのマシンに gcloud がインストールされているとは限りません。

docker-compose up -d自分のマシンで実行すると、次のエラーが発生します。

Pulling image gcr.io/projectID/image-name...
Pulling repository gcr.io/projectID/image-name
Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.main", line 31, in main
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.docopt_command", line 21, in sys_dispatch
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.command", line 27, in dispatch
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.docopt_command", line 24, in dispatch
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.command", line 59, in perform_command
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.main", line 464, in up
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.project", line 208, in up
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.service", line 214, in recreate_containers
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.service", line 199, in create_container
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.progress_stream", line 37, in stream_output
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.progress_stream", line 50, in print_output_event
compose.progress_stream.StreamOutputError: Error: Status 403 trying to pull repository projectID/image-name: "Access denied."

何らかの形式の OAuth またはキーを使用してイメージを認証またはアクセスする方法はありますか? イメージをプルする必要があるすべてのマシンに gcloud をインストールする必要はなく、イメージは非公開のままにしておく必要があります。

私は試しgcloud preview docker -aましたが、それは私が探している解決策ではありません。

よろしくお願いします。

4

2 に答える 2

11

Google Compute Engine 以外のマシン (つまり、ローカル) でバニラ docker を使用して Google Container Registry を操作する場合は、Google の指示に従ってください

2 つの主な方法は、アクセス トークンまたは JSON キー ファイルを使用することです。

_token_json_keyは、ユーザー名に指定した実際の値であることに注意してください( -u)

アクセストークン

$ docker login -e 1234@5678.com -u _token -p "$(gcloud auth print-access-token)" https://gcr.io

JSON キー ファイル

$ docker login -e 1234@5678.com -u _json_key -p "$(cat keyfile.json)" https://gcr.io

キー ファイルを作成するには、次の手順に従います。

  1. 資格情報ページを開きます。
  2. 新しいサービス アカウントを設定するには、次の手順を実行します。
    • [資格情報の追加] > [サービス アカウント] をクリックします。
    • サービス アカウントの公開/秘密鍵を標準の P12 ファイルとしてダウンロードするか、Google API クライアント ライブラリによってロードできる JSON ファイルとしてダウンロードするかを選択します。
    • 新しい公開鍵と秘密鍵のペアが生成され、マシンにダウンロードされます。このキーの唯一のコピーとして機能します。あなたはそれを安全に保管する責任があります。

キー ファイルの生成に関する Google のドキュメントは、こちら でご覧いただけます。

于 2015-11-18T04:22:51.260 に答える