推送docker镜像到github

在本地的docker上build一个镜像

docker build -t image_name .

把镜像标记为ghcr.io的格式

docker tag image_name:latest ghcr.io/Github_name/image_name:latest

#格式ghcr.io/USERNAME/IMAGE_NAME:TAG
#USERNAME	github用户名(必须是小写)
#IMAGE_NAME	给镜像起的名
#TAG		版本标签

在github上创建用来推送镜像的Personal Access Token(PAT)

登录GitHub

进入 Settings (设置) > Developer settings (开发者设置) > Personal access tokens > Tokens (classic)。

然后 "Generate new token" (生成新令牌) > "Generate new token (classic)"。

起个令牌的名字

设置 Expiration (过期时间)。

最重要的一步: 勾选以下 scopes (权限):

write:packages (允许你推送镜像)

read:packages (允许你拉取私有镜像)

delete:packages ((可选)允许你删除镜像)
其他的权限可选可不选,只用来push到github的话这三个就够了

点击 "Generate token"。

复制生成的令牌, 这个令牌只会显示一次,记得保存好这个令牌。

登录ghcr

echo "PAT"(刚才生成的PAT) | docker login ghcr.io -u Github_name --password-stdin

推送镜像

docker push ghcr.io/Github_name/image_name:latest

这时镜像就被推送到github上了,可以在个人资料页面的packages中看到推送的镜像

此时在服务器上就可以拉取镜像了,不过推送到github上的镜像默认是Private,无法随意拉取,需要在要拉取的服务器上登录ghcr再拉取镜像

登录

echo "PAT" | docker login ghcr.io -u Github_name --password-stdin

拉取镜像

docker pull ghcr.io/Github_name/image_name:latest

公开镜像

如果嫌每次拉取时都要登录太麻烦了,可以把镜像的可见性改为Public,这样就可以直接拉取了

进入github个人资料页面

packages

点击想要改变可见性的镜像进入详情页

在右侧找到Package settings(包设置)

在最下面找到Change visibility,设置为Public

之后拉取镜像的时候直接pull就可以了,不用再登录一次

posted @ 2025-11-03 19:16  Pr0x1ma  阅读(7)  评论(0)    收藏  举报