GitHub 镜像仓库服务 Ghcr 快速上手教程
Posted 奇妙的Linux世界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GitHub 镜像仓库服务 Ghcr 快速上手教程相关的知识,希望对你有一定的参考价值。
Github Container Registry
9 月 1 日,GitHub
宣布 Github Container Registry
开始公测,测试期间提供免费、无限容量的 Docker
镜像仓库服务。
再也不用担心,docker.io
一言不合清理镜像了。真好真香!
GitHub
正在以托管代码仓库为切入点,逐步覆盖整个研发工具链,打造一站式 DevOps
平台。项目管理有 Issues
、Projects
,包管理有 Packages
,CI
有 Actions
,知识管理有 Wiki
,覆盖面越来越广。
接下来应该就是 CD
部分了,提供容器托管服务是个不错的选择。@GitHub
推送第一个镜像
下面我们来试试推送一个镜像。
-
创建登陆 Token
直接使用 GitHub
的账户密码推送镜像会提示错误:
unauthorized: Your token has not been granted the required scopes to execute this query. The 'id' field requires one of the following scopes: ['read:packages'], but your token has only been granted the: [''] scopes. Please modify your token's scopes at: https://github.com/settings/tokens.
Github Container registry
需要使用 https://github.com/settings/tokens/new
页面创建的 Token
作为密码才可以推送镜像。
打开上面的链接,勾选 write:packages
和 read:packages
,repo
会自动选中,创建 Token
。
下面以 XXX
代指这里的 Token
值。
-
镜像推送
-
登陆
$ echo "XXX" | docker login ghcr.io -u shaowenchen --password-stdin
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
-
新建 Tag
# 查看镜像列表
$ docker images
mysql 8.0.11 5dbe5b6313e1 2 years ago 445MB
# 新建 Tag
$ docker tag 5dbe5b6313e1 ghcr.io/shaowenchen/mysql
-
推送
$ docker push ghcr.io/shaowenchen/mysql
The push refers to repository [ghcr.io/shaowenchen/mysql]
ae2d2cded00e: ...
latest: digest: sha256:d98a807f255bd60cd7807af6a11f94cd2456a2908a12adb3737088473c1625a2 size: 2828
这样就完成了镜像的推送。但是镜像并不是每个人都可以 pull
,下面接着来看下镜像的可见性管理。
-
可见性管理
推送完成镜像之后,在个人的主页 packages
标签页下面,可以看到镜像列表。
默认推送的镜像是 Private
,只有授权的账户才可以 pull
。而 Public
镜像可以匿名 pull
,没有限制。
-
Private
在 Private
镜像的 Packages settings
页面,可以将 Private
镜像改为 Public
,还可以进行授权的管理 Manage Access
。
-
Public
需要注意的是在 Public
镜像的 Packages settings
页面,无法修改镜像的可见性,只能删除镜像。
与 docker.pkg.github.com 的区别
ghcr.io
与 docker.pkg.github.com
类似,都是提供镜像仓库服务,使用一样的鉴权方式。但是也有些不同:
-
维度不同
ghcr.io
针对的是账户维度,是以账户为基本对象提供的服务。而 docker.pkg.github.com
针对的是仓库维度,是以仓库为基本对象提供的服务。
-
管理粒度不同
docker.pkg.github.com
中的镜像不允许直接删除,只能通过删除仓库的方式,关联删除镜像。
而在 ghcr.io
中,可以直接完全管理镜像。
-
镜像格式不同
对比一下两者的镜像格式:
docker.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME
ghcr.io/OWNER/IMAGE-NAME
docker.pkg.github.com
镜像格式形如 docker.pkg.github.com/shaowenchen/pipeline-test/mysql
,在名字中会带上仓库名。而 ghcr.io
提供的 ghcr.io/shaowenchen/mysql
与其他镜像仓库的命名规范更加一致。
参考
-
https://docs.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages/
-
https://github.blog/2020-09-01-introducing-github-container-registry/
本文转载自:「陈少文的博客」,原文:http://suo.im/5MiEVF,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。
你可能还喜欢
Nali:一个离线查询 IP 地理信息和 CDN 提供商的终端利器
更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!
以上是关于GitHub 镜像仓库服务 Ghcr 快速上手教程的主要内容,如果未能解决你的问题,请参考以下文章