我有从 docker hub 移动的 google 容器注册表上的影像。我有我的 docker-compose.yml。compose 档案已成功从 docker hub 拉取影像。但我无法从谷歌容器注册表中提取。
登录容器注册表的步骤
- gcloud 身份验证撤销 --all
- gcloud 身份验证登录
- gcloud 配置集项目 projectId
- gcloud auth activate-service-account deploy@projectId.iam.gserviceaccount.com --key-file=service-account.json
- gcloud auth 配置泊坞窗
- (a) gcloud auth 打印访问令牌 | docker login -u oauth2accesstoken --password-stdin https://asia.gcr.io
登录结果成功
码头工人组成
ERROR: pull access denied for [my_image_name], repository does not exist or may require 'docker login': denied: requested access to the resource is denied
我可以用下面的命令拉影像
docker pull asia.gcr.io/projectid/myimagename/data-api:latest
码头工人
version: "3.3"
services:
data_api:
container_name: myimagename-data-api
image: myimagename/data-api
expose:
- 4000
ports:
- "4001:4000"
depends_on:
- db
environment:
DATABASE_URL: mysql://root:root@db:3306/myimagename
ACCESS_TOKEN_SECRET: xxxxxxxxxx
REFRESH_TOKEN_SECRET: xxxxxxxxx
networks:
- db-api
db:
container_name: myimagename-db
image: myimagename/db
restart: always
volumes:
- ./db/data/:/var/lib/mariadb/data
environment:
MARIADB_ROOT_PASSWORD: root
MARIADB_DATABASE: myimagename
expose:
- 3306
ports:
- "3307:3306"
networks:
- db-api
networks:
db-api:
uj5u.com热心网友回复:
如果您查看该service-account.json
档案,您会发现它不是传统意义上的“密码”。因此,将其作为标准输入密码输入是行不通的。编辑:TIL - 您可以根据档案将凭据档案作为密码输入
我建议使用gcloud 凭据帮助程序——如果你有权限,你可以以自己的身份登录,或者你可以使用带有凭据.json档案的服务账户——这似乎是你的情况。请确保您的服务账号拥有正确的 IAM 权限。
拉(只读):
- 角色/storage.objectViewer
推(写)和拉:
- 角色/storage.legacyBucketWriter
uj5u.com热心网友回复:
我的偏好是使用我个人 ( gcloud config get-value account
) 账户的凭据,因为它最简单:
gcloud auth print-access-token \
| docker login \
--username=oauth2accesstoken \
--password-stdin \
asia.gcr.io
如果您使用服务账户(密钥),则需要确保该账户roles/storage.Admin
在项目 (!) 上具有合适的权限(对于 push|pull 您需要?),或者,如果您更喜欢代表注册表。
另一个挑战是,如果您使用 Snaps (?),则 Docker 运行时的凭证存盘与 Docker Compose 使用的凭证存盘之间可能存在磁区。
uj5u.com热心网友回复:
好的,终于,我发现了问题。它是影像名称。我们不能使用与 docker hub 相同的影像名称。我们需要完整的路径。
图片:asia.gcr.io/projectid/myimagename/data-api:latest
而不是 myimagename/data-api
0 评论