1. Github Container Registry
9 月 1 日,GitHub 宣布 Github Container Registry 开始公测,测试期间提供免费、无限容量的 Docker 镜像仓库服务。再也不用担心,docker.io 一言不合清理镜像了。真好真香!GitHub 正在以托管代码仓库为切入点,逐步覆盖整个研发工具链,打造一站式 DevOps 平台。项目管理有 Issues 、Projects,包管理有 Packages,CI 有 Actions,知识管理有 Wiki ,覆盖面越来越广。接下来应该就是 CD 部分了,提供容器托管服务是个不错的选择。@GitHub
2. 推送第一个镜像
下面我们来试试推送一个镜像。
2.1 创建登陆 Token
直接使用 GitHub 的账户密码推送镜像会提示错误:
|
|
Github Container registry 需要使用 https://github.com/settings/tokens/new 页面创建的 Token 作为密码才可以推送镜像。打开上面的链接,勾选 write:packages
和 read:packages
,repo
会自动选中,创建 Token。下面以 XXX 代指这里的 Token 值。
2.2 镜像推送
- 登陆
|
|
- 新建 Tag
查看镜像列表
|
|
新建 Tag
|
|
- 推送
|
|
这样就完成了镜像的推送。但是镜像并不是每个人都可以 pull ,下面接着来看下镜像的可见性管理。
2.3 可见性管理
推送完成镜像之后,在个人的主页 packages 标签页下面,可以看到镜像列表。默认推送的镜像是 Private ,只有授权的账户才可以 pull 。而 Public 镜像可以匿名 pull ,没有限制。
- Private
在 Private 镜像的 Packages settings 页面,可以将 Private 镜像改为 Public ,还可以进行授权的管理 Manage Access。
- Public
需要注意的是在 Public 镜像的 Packages settings 页面,无法修改镜像的可见性,只能删除镜像。
3. 与 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
镜像格式形如 docker.pkg.github.com/shaowenchen/pipeline-test/mysql
,在名字中会带上仓库名。而 ghcr.io
提供的 ghcr.io/shaowenchen/mysql
与其他镜像仓库的命名规范更加一致。
4. 参考
- 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/