GHCR全流程入门指南

Author Avatar
青枫 1月19日
  • 在其它设备中阅读本文章
  • Linux
  • Docker
  • GHCR
  • 分享到 Facebook
  • 分享到 Telegram
  • 分享到 Twitter
  • 分享到微博

这份指南将带你从零开始,把你的 Docker 镜像托管到 GitHub Container Registry (GHCR)。

第一步:在 GitHub 上生成访问令牌 (PAT)

GitHub 不允许直接使用你的登录密码来通过 Docker 客户端登录,必须使用 Personal Access Token (Classic)。

  1. 登录 GitHub,点击右上角头像 -> Settings。
  2. 在左侧菜单最下方,点击 Developer settings。
  3. 选择 Personal access tokens -> Tokens (classic)。
  4. 点击 Generate new token -> Generate new token (classic)。
  5. Note: 写个名字,比如 Docker-GHCR-Token。
  6. Expiration: 建议选 90 天或更久(过期后需重新生成并登录)。
  7. 勾选权限(非常重要):

    • write:packages (上传镜像)
    • read:packages (下载镜像)
    • delete:packages (如果你需要删除镜像)
    • 注意:勾选 write:packages 时会自动勾选 repo 权限,这是正常的。
  8. 点击最下方的 Generate token。
  9. 【核心提醒】: 立刻复制并保存这个 Token!一旦刷新页面你就再也看不见它了。

第二步:在本地终端登录 GHCR

打开终端(Terminal 或 PowerShell),执行以下命令:

# 替换你的 GitHub 用户名为小写
export GH_USER="你的GitHub用户名" 
export GH_PAT="你刚才复制的Token"

# 执行登录
echo $GH_PAT | docker login ghcr.io -u $GH_USER --password-stdin

如果看到 Login Succeeded,说明第一关过了。


第三步:命名、构建与打标签

GHCR 的镜像命名规则非常严格,格式必须是:
ghcr.io/用户名/镜像名:版本号

注意:用户名和镜像名必须全部小写!

假设你的 GitHub 用户名是 stonework,项目叫 my-web-app。

情况 A:直接从 Dockerfile 构建

docker build -t ghcr.io/stonework/my-web-app:v1.0 .

情况 B:给已有镜像重命名

如果你本地已经有一个叫 art-design 的镜像了:

docker tag art-design:latest ghcr.io/stonework/my-web-app:v1.0

第四步:推送镜像到 GitHub

这是见证奇迹的时刻:

docker push ghcr.io/stonework/my-web-app:v1.0

第五步:在 GitHub 网页上管理镜像

  1. 打开你的 GitHub 主页 ( github.com/你的用户名 )。
  2. 点击顶部导航栏的 Packages。
  3. 你会看到刚刚上传的 my-web-app。
  4. 默认是私有的 (Private):只有你自己能看到。
  5. 修改设置(可选):

    • 点击镜像进入详情。
    • 点击右侧的 Package settings。
    • 在页面最下方,你可以:

      • Change visibility:把镜像设为 Public(公开)。
      • Link Repository:把这个镜像和你的某个代码仓库关联起来(关联后,仓库首页右侧会显示镜像入口)。

第六步:在其他机器上下载(拉取)镜像

在你的服务器或其他电脑上,你同样需要先执行 第二步 的登录操作,然后运行:

docker pull ghcr.io/stonework/my-web-app:v1.0

进阶:如何彻底实现“一劳永逸”?

如果你觉得手动输入命令太累,GHCR 最强大的地方在于配合 GitHub Actions。

你可以写一个简单的自动化脚本(.github/workflows/docker-publish.yml),实现: 只要你往 GitHub 提交代码,它就自动帮你构建镜像、打版本号并推送到 GHCR。

避坑小贴士:

  1. 大小写敏感 :GHCR.io/User/Image 会报错,必须全小写 ghcr.io/user/image。
  2. Token 丢失 :如果忘了保存 Token,只能重新生成一个并重新 docker login。
  3. 配额限制 :GHCR 个人版有 500MB 的免费存储额度。对于一般的 Next.js 项目(压缩后通常很小),完全够用。如果镜像特别巨大,注意清理旧版本。
      新篇
旧篇      
    • fingerprint Login
  • home 主页
  • inbox 归档
    • March 2026 1
    • January 2026 3
    • July 2025 3
    • June 2025 1
    • April 2025 1
    • May 2024 1
    • April 2024 1
    • March 2024 1
    • February 2024 1
    • December 2023 5
    • July 2023 2
    • March 2023 1
    • February 2023 1
    • January 2023 6
    • December 2022 1
    • August 2022 2
    • July 2022 1
    • June 2022 1
    • May 2022 2
    • April 2022 2
    • September 2021 1
    • August 2021 1
    • July 2021 1
    • May 2021 1
    • April 2021 1
    • March 2021 3
    • February 2021 3
    • December 2020 3
    • November 2020 1
    • October 2020 2
    • July 2020 3
    • April 2020 1
    • January 2020 1
    • November 2019 1
    • October 2019 1
    • August 2019 1
    • November 2018 2
  • apps 分类
    • 默认分类
    • linux笔记
    • 软件仓库
    • 奇闻趣事
    • 无可奉告
  • 关于
  • 友链
  • 时间轴
  • 文章总数 64
expand_less
Copyright © 2026 青枫博客
本站已安全运行: