(阅读目录)

目的

CI / CD在目前各类互联网企业中已然成为推动软件开发行为的重要基础设施服务。同样的对于测试团队来说更是有着举足轻重的重大意义,无论是测试左移的具象化提现亦或是持续测试的顺利开展,掌握这一技能已是广大软件测试工程师的必修课。分享这一技术笔记也是希望除了自己团队以外的广大测试同学们可以有体系的学习这一技能。

 

接上回

我们已经看了相关docker中的一些高频基础命令,对于日常的一些基本操作有了一个大致的了解和印象,接下来会和大家一起接触docker仓库的相关操作。 在测试团队的日常工作中,测试环境的一致性对测试活动、产品测试的最终结果也会起到至关重要的作用,可以说保持测试环境的一致性是测试活动顺利开展的大前提之一。

 

公共仓库

Docker Hub 是docker公司维护的公共仓库,所有的镜像均为免费使用,无需注册,安装docker后使用docker search即可搜索里面所有的镜像。具体的其他仓库操作可以参看之前的技术笔记【docker使用手册(3)—— 基础使用】

但如果需要将你自己的镜像上传至Docker Hub上的话就需要进行以下操作。

 

在docker官网注册一个账号,Docker Hub官网

 

创建一个公共仓库 在这里插入图片描述    

指定一个仓库名称后,选择创建一个公共仓库 在这里插入图片描述    

创建完成后会跳转至已创建的公共仓库界面,上面会告诉你如何在docker中将镜像推送到你的仓库 在这里插入图片描述    

然后我们在自己的服务器上进行docker hub的登录,使用docker login命令进行登录操作

显示"Login Succeeded"就说明登录成功了

   

登录的认证信息都在隐藏文件夹docker的config.json文件里 在这里插入图片描述 如果你在多个三方平台创建过公共或私有仓库,认证信息都是保存在这个文件内。

   

对需要推送的镜像先进行打tag操作

docker tag 镜像名:tag 仓库路径/镜像名:tag

   

再使用push命令进行镜像的推送

docker push 仓库路径/mysql:uat

在这里插入图片描述 显示如上画面就说明推送成功了。

   

仓库里也显示已经有了该版本镜像 在这里插入图片描述

     

私有仓库

阿里云私有仓库

这里我们先介绍阿里云的私有仓库创建和使用方法。相较于其他仓库,阿里云的镜像下载和上传速度都是比较不错的。   首先注册一个阿里云的账号

 

进入阿里云的【容器镜像服务】

 

在这里创建个人实例 在这里插入图片描述    

点击创建 在这里插入图片描述    

创建完成后,设置自己的仓库登录密码 在这里插入图片描述

   

在镜像仓库中创建新的仓库 在这里插入图片描述    

这里的空间名只要不重复就OK,仓库名字和你要上传的镜像一致即可。 在这里插入图片描述

   

这里如果没有不指定代码源的话,就选择本地仓库 在这里插入图片描述    

然后我们在服务器中就可以进行镜像的推送了。

   

在服务器中先登录阿里云的仓库

在这里插入图片描述    

对镜像打tag 在这里插入图片描述

   

使用docker push来进行镜像推送

在这里插入图片描述    

上传成功后查看仓库

在这里插入图片描述 镜像已经上传成功了

   

Registry

我们之前使用的docker hub其实也是docker registry的一种,它是docker自带的集中存储与分发镜像服务。他也可以设置为公有和私有两种。当我们的测试环境受制于测试条件或网络条件的时候,就可以搭建公司内部的私有仓库,依托于内网的网络环境实现服务快速部署和切换的目的。

 

由于是自带的,我们可以直接使用docker run命令进行启动

docker run -d --name registry -p 5000:5000 registry

 

不指定仓库位置的话,默认会创建在/var/lib/registry下,如果需要指定仓库创建的位置,使用参数v进行创建,创建规则:-v 指定路径:默认路径

docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry

如果是第一次创建,docker将会自动拉取registry 在这里插入图片描述

 

已经可以看见创建完的仓库了 在这里插入图片描述  

现在我们需要将镜像推送到私有仓库中,但如果需要让内网中同一网段的其他终端都可以往此仓库中进行推送的话就要做以下操作:

首先,确认自己的服务器内网IP(安装registry的那台),因为我们之前启动的时候已经将服务端口印射出来了,所以其他同网段内网终端在推送镜像时将推送地址(IP+端口)设置为服务器的即可。

另外docker不允许任何非https协议方式的镜像推送方式,而我们又是内网,所以要通过修改docker的配置来规避这一限制。

 

编辑docker的demon.json文件

vim /etc/docker/daemon.json

在改文件内添加如下内容:

"insecure-registries": ["服务器IP:端口号"]

这里有几个注意点,服务器与端口号均为安装了registry的那台的IP和服务端口,如192.168.10.55:5000(之前启动registry的时候印射的5000),另外如果之前添加过第三方的容器镜像加速服务的,需要注意添加的格式,文本内容为json格式,所以加在前面的话别忘记在结尾添加英文逗号分隔开,加后面的话记得在前一个键值对后添加逗号分隔。

添加完后如下图,顺序随意: 在这里插入图片描述  

做完以上操作之后就可以从任意一台装有docker的内网同网段终端中进行镜像的推送了。

 

接下来就开始对镜像进行打tag操作

docker tag mysql:5.6 192.168.10.55:5000/mysql:v1

 

进行镜像的推送操作

docker push 192.168.10.55:5000/mysql:v1

在这里插入图片描述  

使用curl命令来进行结果查看

curl 服务器IP:端口/v2/_catalog

在这里插入图片描述 显示对应的镜像名即为正确

 

在其他同网段终端上输入以下命令即可进行镜像的拉取

docker pull 192.168.10.55:5000/mysql:v1