从Github注册表使用Docker镜像是未经授权的

3b6akqbq  于 2023-05-16  发布在  Docker
关注(0)|答案(4)|浏览(197)
  • 我在本地创建了Docker镜像
  • Github Docker注册表
  • 已将其推送到Github Docker注册表

现在我想在Github中使用它,在FROM字段中创建Docker镜像,但它总是失败,出现unauthorized错误-为什么?
步骤如下:

docker tag my_image:1.0 ghcr.io/<github_user>/<organization>/<repo_name>/my_image:1.0

docker push ghcr.io/<github_user>/<organization>/<repo_name>/my_image:1.0
a4f566342e89: Pushed
0378d9143186: Pushed
...
f337026e7d90: Pushed

你所看到的一切都成功完成了,我甚至可以在我的电脑上docker pull
然后我设置Github action并将其设置为启动Powershell脚本,从这个Dockerfile创建Docker镜像:
所以Github action设置为:

...
...
jobs:

  build:

    runs-on: windows-2019

    steps:
    - uses: actions/checkout@v2
    - name: Package with Docker and push to Github packages
      id: build_and_push_docker_image    
      env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}    
      run: |
        src/database/base-image/github-build.ps1

只有一步!
Powershell脚本本身:

...
docker login ghcr.io --username $env:GITHUB_ACTOR --password $env:GITHUB_TOKEN
...
docker build src/database/base-image --file "src/database/base-image/databaseCreateBaseImage.Dockerfile" --tag sqldatabase/base:$VERSION
...
...

Docker文件是:

FROM ghcr.io/<github_user>/<organization>/<repo_name>/my_image:1.0

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

...
...

但可悲的是,当Github action运行时,它总是在FROM行失败,并显示错误消息:

Step 1/7 : FROM ghcr.io/<github_user>/<organization>/<repo_name>/my_image:1.0
Get https://ghcr.io/v2/<github_user>/<organization>/<repo_name>/my_image/manifests/1.0: unauthorized
...
...

可能有人可以提供一些光-为什么它没有被授权pull这个图像?所有的操作都没有错误,直到FROM行:(

hwamh0ep

hwamh0ep1#

我的错
根据Github文档,使用GITHUB_TOKEN对GitHub包进行身份验证不是(!)足够.如果你想使用Github注册表(ghcr.io)你**必须(!)**使用您的个人访问令牌。

hi3rlvi2

hi3rlvi22#

这帮助了我:

echo '<my_token>' | docker login ghcr.io -u <my_username> --password-stdin
  • <my_token>是来自Github的PAT *
rxztt3cl

rxztt3cl3#

确保GitHub Actions可以访问Docker Image(如@sihil所述),并将以下步骤添加到您的作业中:

- name: Login to GitHub Container Registry
  uses: docker/login-action@v2
  with:
    registry: ghcr.io
    username: ${{ github.actor }}
    password: ${{ secrets.GITHUB_TOKEN }}
lymnna71

lymnna714#

我想你可能需要做两件事:

  • 首先,确保Package设置(package页面的右下角)允许访问正在讨论的存储库中运行的操作
  • 其次,确保已将包权限添加到作业中

更多细节请参见我对GITHUB_TOKEN permission denied write package when build and push docker in github workflows的回答

相关问题