第一步: 创建个人访问令牌
访问GitHub个人设置页面,点击Generate new token按钮,创建一个个人访问令牌, 选择第二个选项(New personal access token (classic))即可。
在创建页面中,填写以下信息:
Note令牌描述,比如testExpiration令牌过期时间,比如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 就能看见你推送的镜像了