我上使用Ubuntu 18.10 GCP创建的虚拟机实例。当我对VM进行SSH修改时,尝试以下操作:
gcloud info
我得到了一些警告:
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
如果我尝试通过以下方式进行身份验证:
sudo gcloud auth configure-docker
我知道:
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 system PATH.
`docker` and `docker-credential-gcloud` need to be in the 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
似乎已安装了最新版本的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
似乎不允许我在此类实例上更新gcloud。
然后,我安装了Docker并提取了一个Docker映像。
sudo snap install docker
sudo docker pull tensorflow/serving
这很好。 问题是我无法在GCP容器注册表上推送映像:
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 reque
st, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication
,并在链接中说明我需要运行:
sudo gcloud auth configure-docker
如何解决此问题?当我对VM进行SSH时,该问题已经存在?
WARNING: `docker-credential-gcloud` not in system PATH.
我可以毫无问题地在DockerHub上推送映像。
我尝试重新安装google-cloud-sdk:
sudo apt-get update && sudo apt-get install google-cloud-sdk
但是现在我需要使用:
sudo gcloud alpha auth configure-docker
和结束我仍然不能推图像。
这似乎与一些路径问题:
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
有什么主意吗?我确实按照GCP文档进行了逐步操作。我还查看了GCP IAM,以授予我的存储桶中的某些访问权限。
我是GCP和Cloud的新手,所以我可能缺少明显的东西。顺便说一句,我需要使用shell脚本构建Docker映像,所以我需要使用这种类型的VM,因为在另一台已经预先安装了很多东西的VM上,都安装了“ noexec”标志。
答案 0 :(得分:1)
这是现在正在工作的(感谢Google的帮助)
设置:
在GCP上测试docker pull / push
现在可行
答案 1 :(得分:1)
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
然后,将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)
答案 2 :(得分:0)
该问题可能是snap
安装;只需从系统中删除/snap/google-cloud-sdk
。或检查which gcloud
,查看哪一个甚至使用。在apt版本似乎不具有可用这些码头工人包 - 而且,在$PATH
只列出了snap
版本。
普通,组件可以是与更新:
gcloud components update
或列出:
gcloud components list
或已安装:
gcloud components install docker-credential-gcr
建议仅通过以下方式安装独立版本:
curl https://sdk.cloud.google.com | bash
在已经除去snap
和apt
的版本,从文件系统和$PATH
。