拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 dockercompose无法从谷歌容器注册表中提取影像

dockercompose无法从谷歌容器注册表中提取影像

白鹭 - 2022-02-11 1976 0 0

我有从 docker hub 移动的 google 容器注册表上的影像。我有我的 docker-compose.yml。compose 档案已成功从 docker hub 拉取影像。但我无法从谷歌容器注册表中提取。

登录容器注册表的步骤

  1. gcloud 身份验证撤销 --all
  2. gcloud 身份验证登录
  3. gcloud 配置集项目 projectId
  4. gcloud auth activate-service-account deploy@projectId.iam.gserviceaccount.com --key-file=service-account.json
  5. gcloud auth 配置泊坞窗
  6. (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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *