1. Github Container Registry9 月 1 日,GitHub 宣布 Github Container Registry 开始公测,测试期间提供免费、无限容量的 Docker 镜像仓库服务 。
再也不用担心,docker.io 一言不合清理镜像了 。真好真香!
GitHub 正在以托管代码仓库为切入点,逐步覆盖整个研发工具链,打造一站式 DevOps 平台 。项目管理有 Issues 、Projects,包管理有 Packages,CI 有 Actions,知识管理有 Wiki,覆盖面越来越广 。
接下来应该就是 CD 部分了,提供容器托管服务是个不错的选择 。@GitHub
2. 推送第一个镜像下面我们来试试推送一个镜像 。
2.1 创建登陆 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 值 。
2.2 镜像推送
- 登陆
echo "XXX" | docker login ghcr.io -u shaowenchen --password-stdinWARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-store
- 新建 Tag
docker imagesMySQL8.0.115dbe5b6313e12 years ago445MB
新建 Tagdocker tag 5dbe5b6313e1 ghcr.io/shaowenchen/mysql
- 推送
docker push ghcr.io/shaowenchen/mysqlThe push refers to repository [ghcr.io/shaowenchen/mysql]ae2d2cded00e: ...latest: digest: sha256:d98a807f255bd60cd7807af6a11f94cd2456a2908a12adb3737088473c1625a2 size: 2828
这样就完成了镜像的推送 。但是镜像并不是每个人都可以 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 类似,都是提供镜像仓库服务,使用一样的鉴权方式 。但是也有些不同:
- 维度不同
- 管理粒度不同
文章插图
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 与其他镜像仓库的命名规范更加一致 。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/
推荐阅读
- Docker-For-Pentest的渗透测试镜像推荐
- 搭建企业级私有仓库harbor-V2.0并上传镜像
- docker 镜像的使用
- 用这个Python的Docker正式版镜像,你也能成容器高玩
- 精选 高速下载GitHubc仓库代码的两种方法
- Github上复旦小姐姐原创「数据结构和算法系列」
- Docker私有镜像
- CentOS7 定制ISO镜像
- 学会这些,操作docker image镜像就够了
- 用阿里云的镜像极速安装监控平台 zabbix5.0