Dr.*_*ade 4 credentials virtual-machine docker google-cloud-platform gcloud
我使用 Ubuntu 18.10 在 GCP 上创建了一个 VM 实例。当我在没有任何修改的情况下通过 SSH 连接 VM 并尝试:
gcloud info
Run Code Online (Sandbox Code Playgroud)
我收到了一些警告:
System PATH: [/snap/google-cloud-sdk/66/usr/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/game
s:/snap/bin]
Python PATH: [/snap/google-cloud-sdk/66/lib/third_party:/snap/google-cloud-sdk/66/lib:/snap/google-cloud-sdk/66/usr/lib/python2.7/:/snap
/google-cloud-sdk/66/usr/lib/python2.7/plat-x86_64-linux-gnu:/snap/google-cloud-sdk/66/usr/lib/python2.7/lib-tk:/snap/google-cloud-sdk/6
6/usr/lib/python2.7/lib-old:/snap/google-cloud-sdk/66/usr/lib/python2.7/lib-dynload]
Cloud SDK on PATH: [False]
Kubectl on PATH: [False]
WARNING: There are old versions of the Google Cloud Platform tools on your system PATH.
/usr/bin/snap
Run Code Online (Sandbox Code Playgroud)
如果我尝试通过以下方式进行身份验证:
sudo gcloud auth configure-docker
Run Code Online (Sandbox Code Playgroud)
我懂了:
WARNING: `docker-credential-gcloud` not in system PATH.
gcloud's Docker credential helper can be configured but it will not work until this is corrected.
WARNING: `docker` not in the system PATH.
`docker` and `docker-credential-gcloud` need to be in same PATH in order to work correctly together.
gcloud's Docker credential helper can be configured but it will not work until this is corrected.
The following settings will be added to your Docker config file
Run Code Online (Sandbox Code Playgroud)
似乎安装了最新版本的 gcloud:
sudo gcloud version
Google Cloud SDK 230.0.0
alpha 2019.01.11
beta 2019.01.11
bq 2.0.39
core 2019.01.11
gsutil 4.35
kubectl 2019.01.11
Run Code Online (Sandbox Code Playgroud)
似乎不允许我在此类实例上更新 gcloud。
然后我安装了 Docker 并拉取了一个 docker 镜像。
sudo snap install docker
sudo docker pull tensorflow/serving
Run Code Online (Sandbox Code Playgroud)
这工作正常。问题是我无法在 GCP Container Registry 上推送映像:
sudo docker tag tensorflow/serving gcr.io/xxx/tf-serving
sudo docker push gcr.io/xxx/tf-serving
Unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request
st, follow the steps in https://cloud.google.com/container-registry/docs/advanced-authentication
Run Code Online (Sandbox Code Playgroud)
并在链接中解释说我需要运行:
sudo gcloud auth configure-docker
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?当我通过 SSH 连接 VM 时,问题已经存在?
WARNING: `docker-credential-gcloud` not in system PATH.
Run Code Online (Sandbox Code Playgroud)
我可以在 DockerHub 上推送图像而没有任何问题。
我尝试重新安装 google-cloud-sdk:
sudo apt-get update && sudo apt-get install google-cloud-sdk
Run Code Online (Sandbox Code Playgroud)
但现在我需要使用:
sudo gcloud alpha auth configure-docker
Run Code Online (Sandbox Code Playgroud)
最后我还是推不出来形象。
它似乎与某些路径问题有关:
Cloud SDK on PATH: [False]
Kubectl on PATH: [False]
WARNING: There are old versions of the Google Cloud Platform tools on your system PATH.
/usr/bin/snap
Run Code Online (Sandbox Code Playgroud)
任何的想法?我确实一步一步地遵循了 GCP 文档。我还查看了 GCP IAM 以授予对我的存储桶的一些访问权限。
我是 GCP 和 Cloud 的新手,所以我可能遗漏了一些明显的东西。顺便说一下,我需要使用 shell 脚本构建一个 Docker 映像,所以我需要使用这种类型的 VM,因为在另一个已经预先安装了很多东西的 VM 上安装了“noexec”标志。
Snap 包包含docker-credential-gcloud在/snap/google-cloud-sdk/current/bin/. 您可以将其符号链接到/usr/local/bin使用:
sudo ln -s /snap/google-cloud-sdk/current/bin/docker-credential-gcloud /usr/local/bin
Run Code Online (Sandbox Code Playgroud)
之后,将 Docker 镜像推送到 Google Container Registry (gcr.io) 工作正常。
我还尝试sudo snap alias google-cloud-sdk.docker-credential-gcloud docker-credential-gcloud为自己创建一个类似于符号链接的符号链接gcloud。但这失败并出现以下错误:
error: cannot perform the following tasks:
- Setup manual alias "docker-credential-gcloud" => "docker-credential-gcloud" for snap "google-cloud-sdk" (cannot enable alias "docker-credential-gcloud" for "google-cloud-sdk", target application "docker-credential-gcloud" does not exist)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7753 次 |
| 最近记录: |