【github】使用github action 拉取国外docker镜像

使用github action 拉取国外docker镜像

  • k8s部署经常用到国外镜像,如果本地无法拉取可以考虑使用github action环境
    • github action的ci服务器在国外,不受中国防火墙影响
    • github action 自带docker命令
    • 运行时直接将你仓库代码拉取下来

步骤

  • 你的国内docker仓库,拿到docker login的命令(这个根据不同的云获取,建议不要用dockerhub)

  • 新建一个github的仓库

  • 创建文件 .github/workflows/docker-build.yml

yaml 复制代码
name: Docker Build

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Log in to Docker Hub
        run: docker login xxx; bash github_push_docker.sh
  • 上面是github action的流水线,docker login 指令请自行替换
  • 然后请在项目根路径创建 github_push_docker.sh ,内容如下
bash 复制代码
#!/bin/bash

pull_registry="gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd" # 目标仓库
push_registry="你的云/你的仓库" # 例子:swr.cn-south-1.myhuaweicloud.com/myrepo
image1="controller:v0.56.0@sha256:fc5669e1bbabbf24b0ee4591ff20793643d778942e91ae52b3f7cca26d81a99b"
image2="nop:v0.56.0@sha256:4e627be53f78f30f73084ea0695d97397930d6f12d4cfab28d97b1aa57842881"
images=($image1 $image2)

for i in "${!images[@]}"
do
    image=`echo ${images[$i]} | awk -F'@' '{print $1}'`
    docker pull ${pull_registry}/${image}
    docker tag ${pull_registry}/${image}  ${push_registry}/${image}
    docker images;
    docker push ${push_registry}/${image}
done
  • 注意:当前仓库任何代码变更都将触发流水线运行

github_push_docker.sh 的使用

  • pull的仓库(国外)请保持一致,结尾不要加 / 号
  • 镜像有多少个,就弄多少个变量。如: image1 、image2、 image3
  • 创建变量后加入 images 数组 images=(image1 image2 $image3) ,模仿格式即可
  • 脚本自动处理 镜像 @ 后面的 sha值,因为当你使用sha值拉回来的镜像是没有tag的,你push就很麻烦了

总结

  • 这是基于github action的拉取镜像方式,本质就是运行了一个简单的脚本。理论上你可以用github的机器做任何事情,比如更复杂的cicd流程
相关推荐
今夕资源网9 小时前
AI声音克隆软件 CosyVoice今夕一键整合包解压即用 阿里巴巴通义实验室开源 github斩获22K星标
人工智能·github·多国语言·声音克隆·零样本语音克隆·感情·ai语音克隆
名字还没想好☜11 小时前
Docker 多阶段构建:把镜像从 1.2GB 砍到 15MB
运维·docker·容器·多阶段构建·镜像优化
胡萝卜术11 小时前
从聊天模型到本地执行助手:Remote MCP 多工具 Agent 实战
面试·架构·github
花和满楼11 小时前
K8s 1.36 ImageVolume GA:OCI 镜像不再只能跑容器
java·容器·kubernetes
慕容引刀13 小时前
告别Commit信息纠结:使用Git AI Commit插件实现规范化提交
人工智能·git·github·visual studio code·visual studio
hj28625113 小时前
Docker 核心知识点整理(网络 + Dockerfile + 原理 + 命令)
网络·docker·容器
梦想的颜色21 小时前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
GoGeekBaird1 天前
我开源了 BeeWeave,给 AI Agent 搭一个越用越懂你的知识创作台
后端·github
fthux1 天前
GitZip Pro 源码解析:一个 GitHub 文件/文件夹下载扩展是如何工作的(一)整体架构与扩展入口
人工智能·ai·开源·github·open source
万里侯1 天前
GitOps 漂移检测:集群里改了配置,Git 还以为一切正常
微服务·容器·k8s