Azure DevOps (九) 通过流水线推送镜像到Registry
上一篇文章我们研究了如何通过流水线编译出一个docker的镜像,本篇我们来研究一下,如何把编译好的镜像推送到镜像仓库去。
平时如果我们是单机部署,我们的docker本身就装在部署的机器上,我们在本机直接build+run一条龙就好了,但是在实际生产中,
更多的可能是分布式的多机部署,或者我们是依赖于K8S进行的部署,这时候我们肯定是需要把编译好的镜像推送到一个统一的仓库
中进行管理,然后在部署的时候统一从这个仓库进行获取。
镜像仓库目前社区主流的是使用Harbor,这个是是VMware贡献给社区的一个开源免费的镜像仓库,有一键部署的脚本,部署成功后通过
对外开放的API既可以实现镜像的推送和拉取,我在写这篇文章的时候自己搭建了一个Harbor打算用来当仓库用,后来想了想好像各个
云厂商都有免费的仓库可以用,于是乎我就去搞了一个腾讯云的仓库,这样也免去了大家搭建harbor的工作量和所需的硬件服务器资源
(注意,我这里不是广告,阿里云、腾讯云、华为云、青云等都有自己的仓库,只是我自己的服务器都在腾讯上)
首先,我们去腾讯云搜索:容器镜像服务,然后开通个人版,个人版是免费的,只是受限的条件很多,但是够用,开通之后,我们进入
到控制台,点击新建仓库,填写好自己的配置信息之后就可以使用了,成品如下:

如果喜欢使用harbor的话也没有问题,harbor的效果如下:

配置好镜像仓库之后,我们去更改一下上一篇文章中我们创建好的流水线,之前的流水线中,我们只是执行了docker build 命令,这个命令只是实现了镜像
的编译工作,接下来我们需要添加docker push命令,来把我们的镜像推送到仓库里去。
首先和之前创建ssh连接一样,我们需要在service connection中添加一个凭证,用来描述我们的仓库地址和账号密码,打开service connection选择docekr registry
添加你的仓库信息,如果你使用的是腾讯云的仓库,账号密码会在你创建仓库时进行设置,如果你使用的是harbor,那么这个账号和密码是写在你harbor的配置文件
里的,和你请求api的账号密码保持一致即可。


填写完之后,我们去更改一下之前的流水线,首先我们先在repository 中选择我们刚才创建好的连接信息,然后修改下面docker build为docker build push,其他的原有参数不需要调整
然后我们运行一下我们的流水线,我们可以看到,流水线在完成了build步骤以后,紧接着就开始执行了push命令,开始推送我们的镜像到腾讯云的仓库。

然后我们去腾讯云上,看一下我们的镜像有没有出现,可以发现,我们刚才推送的镜像现在已经躺在腾讯云上了。

如果你使用的是harbor的话,首先需要确保你部署harbor使用的是https,因为docker在push的时候默认是执行https的,其次就是,在请求的时候不需要带端口号,可能是我
安装的不太好的原因,我的harbor生成的命令里带着端口号,让我爬了很久的坑。和腾讯云一样,我们需要创建一个新的service_connection,里面保存harbor的信息,
地址填写你部署harbor的域名或者ip就可以,但是必须是https的,不然后面会走不通。

然后我们去更新一下我们流水线的配置,把腾讯云的换成harbor的配置,同时需要更改下面的repostory信息,更换成harbor的,例如我在harbor上创建的仓库的名称是:azure
所以我们这里就要写「仓库名」/『镜像名』,例如:azure/my-devops,到时候推送的时候docker会通过tag命令把编译好的镜像命名为:azure/my-devops:tag的格式,推送到你
的harbor仓库里去。

然后我们执行一下流水线,看一下生成的命令是否和我们的想法匹配,可以看到和我们预期的是一致的,流水线开始推送镜像到我们的仓库里去。

然后我们去harbor里看一下镜像是否已经成功推送

到这里我们本篇文章就结束了,这里我们成功实现了推送镜像到其他的公网仓库去,接下来我们会继续研究azure的其他功能。
Azure DevOps (九) 通过流水线推送镜像到Registry的更多相关文章
- Azure DevOps (八) 通过流水线编译Docker镜像
上一篇文章我们完成了最简单的传统部署:上传应用到服务器上使用守护进程进行应用的部署. 本篇文章我们开始研究容器化和流水线的协作. 在开始操作之前,我们首先需要准备一下我们的dockerfile,这里我 ...
- Azure DevOps (十) 通过流水线完成Docker镜像的部署
上一篇文章中,我们通过azure的流水线完成了镜像推送到镜像仓库中去,本篇文章我们继续开始完成下一步,通过流水线把镜像从仓库拉取到任意一台公网的服务器上去, 完成镜像部署的闭环. 首先我们需要先准备一 ...
- 【OF框架】在Visual Studio中发布Docker镜像,推送镜像到Azure容器注册表
准备 拥有Azure账号,已经创建 Azure容器注册表,获得注册表地址.账号.密码 本地已经在Visual Studio登录Azure账号. 本地已经拥有Docker环境 注意:首次发布Docker ...
- Docker 镜像&仓库 获取及推送镜像
docker查看.删除镜像 docker镜像存储位置: /var/lib/docker 查看docker信息也可以查看保存位置 docker info 1.列出镜像 docker images -aa ...
- docker 推送镜像到阿里云
1. 登录阿里云Docker Registry $ sudo docker login --username=www.18860363800@hotmail.com registry.cn-beiji ...
- docker推送镜像到私有仓库
配置私有仓库源 私有仓库地址:registry.supos.ai 修改/etc/docker/daemon.json文件,增加insecure-registries,如下所示: { "ins ...
- 将插件绑定在某个phase执行,推送镜像
文章目录 将插件绑定在某个phase执行 推送镜像 将插件绑定在某个phase执行 需求:在执行mvn clean package 时,插件自动为构建Docker镜像. 实现:将插件的的goal绑定在 ...
- Docker学习(6) 获取和推送镜像
查找镜像 拉取镜像 推送镜像 总结
- 【OF框架】在Azure DevOps中配置项目持续集成CI服务,推送镜像到Azure容器注册表
准备工作 开通Azure账号,具有开通服务权限,关键是里面要有钱. 开通Azure DevOps,能够创建组织和项目. 具备一定的DevOps知识,了解CICD概念.Docker基本操作. 一.创建& ...
随机推荐
- 云原生技术赋能ISV实现应用现代化
日前,由BP商业伙伴主办,中国开源云联盟和云原生应用现代化联盟协办的2021-2022云计算生态峰会成功举办.头部ISV代表.最终用户和云原生技术专家等与会各方围绕"云原生技术赋能ISV&q ...
- 翻译 | Kubernetes 将改变数据库的管理方式
作者:Álvaro Hernández 当技术决策人考虑在 Kubernetes 上部署数据库时,面临的第一个问题就是:"Kubernetes 有应对有状态服务的能力吗?"多年来的 ...
- Three.js 火焰效果实现艾尔登法环动态logo 🔥
声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 背景 <艾尔登法环>是最近比较火的一款游戏,观察可以发现它的 Log ...
- Java 代码注意细节
代码优化的目标是: 1.减小代码的体积 2.提高代码运行的效率 代码优化细节 1.尽量指定类.方法的final修饰符 带有final修饰符的类是不可派生的.在Java核心API中,有许多应用final ...
- K8S原来如此简单(三)Pod+Deployment
上篇我们已经安装好k8s1.23集群,现在我们开始使用k8s部署我们的项目 Pod Pod 是一组容器集合,是可以在 Kubernetes 中创建和管理的.最小的可部署的计算单元.这些容器共享存储.网 ...
- 自定义函数实现atoi功能
思路: 列如char a[ ] ="123" "1" "2" "3' "\0" 首先遍历这个字符串 知道这个字 ...
- Blazor 001 : 一个激进的Web开发框架
本文从比较高的位置俯瞰一下 .NET Blazor 技术方向,主要是给大家介绍一下"什么是 Blazor" 文章后半部分会给出一个 Blazor 中的 Hello World 示例 ...
- WebGPU 计算管线、计算着色器(通用计算)入门案例:2D 物理模拟
目录 1. WebGL 2. WebGPU 2.1. 适配器(Adapter)和设备(Device) 2.2. 着色器(Shaders) 2.3. 管线(Pipeline) 2.4. 并行(Paral ...
- 8元电调调参教程(使用Arduino Uno)| BLHeli无刷电调的固件烧写及调参
前言 淘某上有款8元电调,性价比很高,但是需要简单设置一下 1.材料清单 (1)Arduino UNO开发板 (2)BLHeliSuite 16.7.14.9.0.1 调参软件及固件已上传Gitee: ...
- Python -用虚拟环境保存库文件
如果你同时负责多个 Python 项目,或者想要轻松打包某个项目及其关联的库文件,再或者你担心已安装的库之间可能有冲突,那么你可以安装一个 Python 虚拟环境来分而治之.当一个 Python 库不 ...