我尝试使用this tutorial将我的docker容器推送到google容器注册表,但是当我运行时
gcloud docker push b.gcr.io/my-bucket/image-name
我收到错误:
The push refers to a repository [b.gcr.io/my-bucket/my-image] (len: 1)
Sending image list
Error: Status 403 trying to push repository my-bucket/my-image: "Access denied."
我无法找到更多解释(没有-D, - debug, - verbose参数被识别),gcloud auth list
和docker info
告诉我我已连接到两种服务。
我遗失了什么?
答案 0 :(得分:5)
创建Google Cloud VM实例时,请确保其具有足够的访问权限。
选项1
在Identity and API访问权限下,选择允许对所有Cloud API的完全访问权限。
选项2(推荐)
在Identity and API访问下,选择为每个API设置访问权限,然后选择 Read Write for Storage。
答案 1 :(得分:3)
使用gsutil
检查ACL以确保您有权写入存储桶:
$ gsutil acl get gs://<my-bucket>
您需要检查您正在使用的帐户所在的群组(&#39;所有者&#39;,&#39;编辑&#39;观看者&#39;等)
编辑:我最近遇到过一个非常类似的问题,正如@lampis在帖子中提到的那样,因为我创建的时候没有设置正确的权限范围VM我试图推动图像。不幸的是,一旦创建了VM,目前无法更改范围,因此您必须删除VM(确保将磁盘设置为自动删除!)并重新创建具有正确范围的VM(& #39; compute-rw&#39;,&#39; storage-rw&#39;似乎已足够)。它不需要很长时间; - )。
请参阅此处的--scopes
部分:https://cloud.google.com/sdk/gcloud/reference/compute/instances/create
答案 2 :(得分:3)
对我来说,我忘了在gcloud
前加上(我想知道docker
如何进行身份验证):
$ gcloud docker push <image>
答案 3 :(得分:3)
我看到的却是间歇性的。例如我可能会拒绝错误:请求“/ v2 / ....”中的“最新”权限被拒绝,但是再次尝试时它会起作用。
还有其他人遇到过这种情况吗?
答案 4 :(得分:1)
如果您使用的是Docker 1.7.0,它们处理身份验证的方式发生了重大变化,这会影响使用gcloud docker
和docker login
混合的用户。
请确保您使用的是最新版本的gcloud:gcloud components update
。
到目前为止,这似乎会影响gcloud docker
,docker-compose
以及其他正在读取/写入Docker auth文件的工具。
希望这有帮助。
答案 5 :(得分:1)
此处的问题相同,https://cloud.google.com/tools/container-registry/#access_denied的问题排查部分并非常有帮助。我已经完全更新了Docker和GCloud。不知道还能做什么。
顺便说一句,我正试图推进&#34; gcr.io&#34;。
固定。我在计算引擎中使用VM作为我的开发机器,看起来我没有给它足够的存储空间。
答案 6 :(得分:1)
访问被拒绝我遇到了同样的问题,我使用标记创建新图片解决了这个问题:
docker tag IMAGE_WITH_ACCESS_DENIED gcr.io/my-project/my-new-image:test
之后我可以 PUSH 它到Container注册表:
gcloud docker -- push gcr.io/my-project/my-new-image:test
答案 7 :(得分:1)
您需要从您所在的计算机登录到gcloud:
$path = 'doc/20180719-ASK FIDC_EVOLUCAO_COTA.xls';
$inputFileType = PHPExcel_IOFactory::identify($path);
$reader = PHPExcel_IOFactory::createReader($inputFileType);
$reader->setReadDataOnly(true);
$reader->setInputEncoding('ISO-8859-1');
//$reader->setDelimiter("\t");
$excel = $reader->load($path);
var_dump($excel);
echo $inputFileType;
$writer = PHPExcel_IOFactory::createWriter($excel, 'CSV');
$writer->setUseBOM(true);
$writer->save('data.csv');
echo 'File saved to csv format';
答案 8 :(得分:1)
在您的终端中,运行下面的代码
$ sudo docker login -u oauth2accesstoken -p "$(gcloud auth print-access-token)" https://[HOSTNAME]
位置
-[HOSTNAME]是您的容器注册表位置(可以是gcr.io,us.gcr.io,eu.gcr.io或asia.gcr.io)。通过运行$ sudo docker images
)来检查已标记的图像。
如果不能解决问题,请尝试查看VM的访问范围。
答案 9 :(得分:0)
今天我在推送Docker容器时在Google Kubernetes Engine上运行的Jenkins中也出现了这个错误。原因是节点池节点版本从之前的gcp中的1.9.6-gke.1升级到1.9.7-gke.0。降级后再次工作。