プライベートGoogleコンテナレジストリに公開されているコンテナイメージのリストにアクセスするためのgcloud
APIまたはその他のコマンドラインインターフェース(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デーモンに接続するように指示する方法がない限り。
リポジトリ内の画像を一覧表示する新しいコマンドをリリースしました。あなたはそれを試すことができます:
gcloud alpha container images list --repository=gcr.io/$MYREPOSITORY
画像の特定のタグを表示する場合は、次を使用できます。
gcloud alpha container images list-tags gcr.io/$MYREPOSITORY/$MYIMAGE
ロバートベイリーによって与えられた答えは、特定のタスクには適していますが、具体的にやりたいことを見逃している可能性があります。それにもかかわらず、彼の答えに対するあなたのコメントは、「失敗する」コマンドが実際に何を意味するのかをあなた自身が理解しているので、彼の答えのせいではありません。
あなたの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 の操作に関する記事全体があります。
画像をホストしているプロジェクト(例:google-containers
)がわかっている場合は、
gcloud docker search gcr.io/google_containers
個々のイメージ(例:google-containers
プロジェクトのpause
イメージ)の場合、次のバージョンを確認できます。
curl https://gcr.io/v2/google-containers/pause/tags/list
特定の画像をチェックするためのはるかに簡単な方法を見つけました。 gcloud
を認証したら、それを使用して、プライベートレジストリから読み取るためのアクセストークンを生成します。
curl -u "oauth2accesstoken:$(gcloud auth print-access-token)" https://gcr.io/v2/<projectName>/<imageName>/tags/list
ローカルドッカーを使用できず、リモートドッカーに接続できない(これには少なくともローカルドッカークライアントが必要ですが、ローカルデーモンは実行されていません)これまでの私の最善の解決策は、実行されるコンテナークラスターインスタンスに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 ..."