ghcr.io的使用教程
Reverse Lv4

第一步: 创建个人访问令牌

访问GitHub个人设置页面,点击Generate new token按钮,创建一个个人访问令牌, 选择第二个选项(New personal access token (classic))即可。

在创建页面中,填写以下信息:

  • Note 令牌描述,比如test
  • Expiration 令牌过期时间,比如30 days,可以设置三个月(90天)
  • Select scopes 选择权限
  • write:packages 选择写入包权限
  • read:packages 选择读取包权限
  • delete:packages 选择删除包权限

毕竟只是为了使用ghcr.io,具备镜像的拉取和推送能力即可,delete删除权限按需选择要不要启用就行.

权限自己选好了就点击下面的创建按钮即可,你就能看见生成的 token 了,这个 token 一定要保存好,不能泄露

而且这个token只能在创建成功时看见这么一次,所以一定要复制出来保存好

第二步: 登录ghcr.io

登录ghcr.io,可以使用docker login ghcr.io命令,如下:

1
docker login ghcr.io -u <username> --password-stdin

其中<username>是你的GitHub用户名,回车后会让你输入密码,将你第一步创建好的令牌输入进去即可。

但是有时候又觉得交互式太麻烦,有没有什么办法可以非交互式登录? 那包的!

1
echo "echo <token></token> | docker login ghcr.io -u <username> --password-stdin" | zsh

其中<token>是你的个人访问令牌,<username>是你的GitHub用户名,后面的zsh是我的解释器,如果你用的是bash那你改改就行。

这样就可以非交互式登录了,是不是很方便?

第三步: 打标签

使用就更简单了,登录成功后你就可以推送或者拉镜像了,比如先给你打包好的 docker 镜像打个 tag,然后推送上去:

GHCR 镜像命名规则非常严格,尽量符合以下规则:

1
ghcr.io/<你的GitHub用户名或组织>/<仓库名>:tag

例如你叫 zhangsan,镜像名是 my-app:

1
docker tag my-app ghcr.io/zhangsan/my-app:latest

另外再说一下,仓库不需要事先创建,push 之后会自动生成

第四步: 推送镜像&拉取镜像

推送镜像就更简单了,直接使用docker push命令即可,如下:

1
docker push ghcr.io/zhangsan/my-app:latest

拉取也是一样的,直接使用docker pull命令即可,如下:

1
docker pull ghcr.io/zhangsan/my-app:latest

第五步: 查看镜像

这时候新问题又来了,镜像推送上去了,我在哪里看? 非常简单,直接访问 github

然后: Profile -> Packages 就能看见你推送的镜像了