github 容器注册服务器介绍

你可以在ghcr.io上存储和管理你的Docker和OCI镜像。

关于容器注册服务器支持类型

  • Docker Image Manifest V2, Schema2
  • Open Container Initiative 规格

容器服务器支持外部layer,比如windows 镜像。

登陆容器注册服务器

登陆ghcr.io建议使用GITHUB_TOKEN工作流来提高安全性。

  1. 创建一个PAT。设置好权限
  2. 建议将PAT设置为环境变量
    $ export CR_PAT=YOUR_TOKEN
  3. 通过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获取精准镜像

  1. 获取digest,通过docker inspect或者docker pull命令,然后拷贝得到的SHA值
    $ docker inspect ghcr.io/OWNER/IMAGE_NAME
  2. 删除本地镜像
    $ docker rmi  ghcr.io/OWNER/IMAGE_NAME:latest
  3. 通过@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镜像

  1. 找到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
  2. 通过ID和镜像名字和托管的主机来tag对应的镜像
    $ docker tag 38f737a91f39 ghcr.io/OWNER/NEW_IMAGE_NAME:latest