你可以在ghcr.io上存储和管理你的Docker和OCI镜像。
关于容器注册服务器支持类型
- Docker Image Manifest V2, Schema2
- Open Container Initiative 规格
容器服务器支持外部layer,比如windows 镜像。
登陆容器注册服务器
登陆ghcr.io建议使用GITHUB_TOKEN工作流来提高安全性。
- 创建一个PAT。设置好权限
- 建议将PAT设置为环境变量
$ export CR_PAT=YOUR_TOKEN
- 通过CLI登陆容器注册服务器
$ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin > Login Succeeded
发布容器镜像
$ docker push ghcr.io/OWNER/IMAGE_NAME:latest
or
$ docker push ghcr.io/OWNER/IMAGE-NAME:2.5
当第一次发布容器时,默认是私有的,需要改变可见性,需要自己去设置:Configuring a package's access control and visibility
获取镜像
通过digest获取精准镜像
- 获取digest,通过docker inspect或者docker pull命令,然后拷贝得到的SHA值
$ docker inspect ghcr.io/OWNER/IMAGE_NAME
- 删除本地镜像
$ docker rmi ghcr.io/OWNER/IMAGE_NAME:latest
- 通过@YOUR_SHA_VALUE 获取精准的镜像
$ docker pull ghcr.io/OWNER/IMAGE_NAME@sha256:82jf9a84u29hiasldj289498uhois8498hjs29hkuhs
通过名字
docker pull ghcr.io/OWNER/IMAGE_NAME
通过名字和版本
$ docker pull ghcr.io/OWNER/IMAGE_NAME:1.14.1
获取当前最新版
$ docker pull ghcr.io/OWNER/IMAGE_NAME:latest
编译镜像
$ docker build -t hello_docker .
tagging镜像
- 找到image id
$ docker images > REPOSITORY TAG IMAGE ID CREATED SIZE > ghcr.io/my-org/hello_docker latest 38f737a91f39 47 hours ago 91.7MB > ghcr.io/my-username/hello_docker latest 38f737a91f39 47 hours ago 91.7MB > hello-world latest fce289e99eb9 16 months ago 1.84kB
- 通过ID和镜像名字和托管的主机来tag对应的镜像
$ docker tag 38f737a91f39 ghcr.io/OWNER/NEW_IMAGE_NAME:latest