web-dev-qa-db-ja.com

gcloudまたは別のCLIを使用して、公開されたコンテナイメージをGoogle ContainerRegistryに一覧表示する方法

プライベートGoogleコンテナレジストリに公開されているコンテナイメージのリストにアクセスするためのgcloud AP​​Iまたはその他のコマンドラインインターフェース(CLI)はありますか? (これは、Google Cloud Platformプロジェクト内のコンテナレジストリです)

gcloud containerは役に立たないようです:

$ gcloud container
Usage: gcloud container [optional flags] <group | command>
  group may be           clusters | operations
  command may be         get-server-config

Deploy and manage clusters of machines for running containers.

flags:
  --zone ZONE, -z ZONE   The compute zone (e.g. us-central1-a) for the cluster

global flags:
  Run `gcloud -h` for a description of flags available to all commands.

command groups:
  clusters               Deploy and teardown Google Container Engine clusters.
  operations             Get and list operations for Google Container Engine
                         clusters.

commands:
  get-server-config      Get Container Engine server config.

また、gcloud dockerを使用して画像を一覧表示したくないのは、これが私が持っていない特定のDockerデーモンに接続するためです。 gcloud dockerに、プロジェクトを通じてレジストリにプッシュされたプライベートコンテナを読み取ることができるリモートのパブリックDockerデーモンに接続するように指示する方法がない限り。

10

リポジトリ内の画像を一覧表示する新しいコマンドをリリースしました。あなたはそれを試すことができます:

gcloud alpha container images list --repository=gcr.io/$MYREPOSITORY

画像の特定のタグを表示する場合は、次を使用できます。

gcloud alpha container images list-tags gcr.io/$MYREPOSITORY/$MYIMAGE
14
dlorenc

ロバートベイリーによって与えられた答えは、特定のタスクには適していますが、具体的にやりたいことを見逃している可能性があります。それにもかかわらず、彼の答えに対するあなたのコメントは、「失敗する」コマンドが実際に何を意味するのかをあなた自身が理解しているので、彼の答えのせいではありません。

あなたの2番目のコメントに関しては、

Dockerを使用すると、次のエラーが発生します(上記の理由により、質問も編集しました):Cannot connect to the Docker daemon. Is the docker daemon running on this host?

これは、dockerデーモンが実行されていない結果です。 ps aux | grep dockerを介して実行されているかどうかを確認します。 Dockerのドキュメント を参照して、適切にインストールして実行する方法を確認できます。

あなたの最初のコメントに関しては、

Curlを使用すると、次のようになります:{"errors":[{"code":"DENIED","message":"Failed to read tags for repository '<my_project>/<my_image>'"}]}。プライベートレジストリの画像にアクセスするには、なんらかの方法で認証する必要があります。 dockerを使用したくないのは、dockerデーモンを使用できるようにする必要があるためです。特定のバージョンのコンテナイメージがコンテナレジストリにあるかどうかだけを確認したい。したがって、必要なのは、Google DeveloperConsoleのContainerRegistryへのAPIです。

Robertの最新のコメントで言及されているように、画像が公開されていない限り、またはcurlの呼び出し中に何らかの方法で優れたoauthヘッダーを提供しない限り、画像をcurlすることはできません。

他のDockerレジストリの場合と同様に、gclouddockerを使用してレジストリ内のイメージを一覧表示する必要があります。 gcloud containerコマンドグループは、目的のタスクに対して間違っています。 dockerコマンドグループのgcloud version 96.0.0(このコメントの時点で最新)からの出力を以下に示します。

$ gcloud docker
Usage: docker [OPTIONS] COMMAND [arg...]
       docker daemon [ --help | ... ]
       docker [ --help | -v | --version ]

A self-sufficient runtime for containers.

Options:

  --config=~/.docker                 Location of client config files
  -D, --debug=false                  Enable debug mode
  --disable-legacy-registry=false    Do not contact legacy registries
  -H, --Host=[]                      Daemon socket(s) to connect to
  -h, --help=false                   Print usage
  -l, --log-level=info               Set the logging level
  --tls=false                        Use TLS; implied by --tlsverify
  --tlscacert=~/.docker/ca.pem       Trust certs signed only by this CA
  --tlscert=~/.docker/cert.pem       Path to TLS certificate file
  --tlskey=~/.docker/key.pem         Path to TLS key file
  --tlsverify=false                  Use TLS and verify the remote
  -v, --version=false                Print version information and quit

Commands:
    attach    Attach to a running container
    build     Build an image from a Dockerfile
    commit    Create a new image from a container's changes
    cp        Copy files/folders between a container and the local filesystem
    create    Create a new container
    diff      Inspect changes on a container's filesystem
    events    Get real time events from the server
    exec      Run a command in a running container
    export    Export a container's filesystem as a tar archive
    history   Show the history of an image
    images    List images
    import    Import the contents from a tarball to create a filesystem image
    info      Display system-wide information
    inspect   Return low-level information on a container or image
    kill      Kill a running container
    load      Load an image from a tar archive or STDIN
    login     Register or log in to a Docker registry
    logout    Log out from a Docker registry
    logs      Fetch the logs of a container
    network   Manage Docker networks
    pause     Pause all processes within a container
    port      List port mappings or a specific mapping for the CONTAINER
    ps        List containers
    pull      Pull an image or a repository from a registry
    Push      Push an image or a repository to a registry
    rename    Rename a container
    restart   Restart a container
    rm        Remove one or more containers
    rmi       Remove one or more images
    run       Run a command in a new container
    save      Save an image(s) to a tar archive
    search    Search the Docker Hub for images
    start     Start one or more stopped containers
    stats     Display a live stream of container(s) resource usage statistics
    stop      Stop a running container
    tag       Tag an image into a repository
    top       Display the running processes of a container
    unpause   Unpause all processes within a container
    version   Show the Docker version information
    volume    Manage Docker volumes
    wait      Block until a container stops, then print its exit code

Run 'docker COMMAND --help' for more information on a command.

gcloud docker search gcr.io/project-idを使用して、リポジトリにある画像を確認する必要があります。 gcloudには資格情報があるため、プロジェクトで適切なユーザーとして認証されている限り、プライベートレジストリと通信できます。


最後に、追加リソースとして:Cloud Platformのドキュメントには、 Google Container Registry の操作に関する記事全体があります。

3
Nick

画像をホストしているプロジェクト(例:google-containers)がわかっている場合は、

gcloud docker search gcr.io/google_containers

個々のイメージ(例:google-containersプロジェクトのpauseイメージ)の場合、次のバージョンを確認できます。

curl https://gcr.io/v2/google-containers/pause/tags/list
1
Robert Bailey

特定の画像をチェックするためのはるかに簡単な方法を見つけました。 gcloudを認証したら、それを使用して、プライベートレジストリから読み取るためのアクセストークンを生成します。

curl -u "oauth2accesstoken:$(gcloud auth print-access-token)" https://gcr.io/v2/<projectName>/<imageName>/tags/list
1
morloch

ローカルドッカーを使用できず、リモートドッカーに接続できない(これには少なくともローカルドッカークライアントが必要ですが、ローカルデーモンは実行されていません)これまでの私の最善の解決策は、実行されるコンテナークラスターインスタンスにSSHで接続することです。 dockerそしてそこで検索を実行し、元のスクリプトで結果を取得します。

gcloud compute ssh <container_cluster_instance> -C "Sudo gcloud docker search ..."

もちろん、すべての冗長な出力(SSH /ターミナルウェルカムメッセージなど)を回避するために、いくつかの引数を使用して実行を少しサイレントにします。

gcloud compute ssh --ssh-flag="-q" "$INSTANCE_NAME" -o LogLevel=quiet -C "Sudo gcloud docker search ..."
1