首页
首页
文章目录
  1. 读取docker仓库内容将数据存入数据库

读取Docker仓库镜像与版本信息并入库

读取docker仓库内容将数据存入数据库

一直在编写自动化发布,涉及到的docker私有仓库与版本滚动更新问题,特意增加了驱动docker仓库内容并将内容写入到数据库中。

数据库设计:两列 分别为 docker镜像名称与镜像所有版本

models.py写法:

1
2
3
4
5
6
7
# 容器测试仓库
class Test_registers(models.Model):
"""镜像仓库数据"""
jxinfo = models.CharField('镜像信息',max_length=512)
version = models.CharField('镜像版本号',max_length=512)
def __unicode__(self):
return self.jxinfo

读取docker仓库数据

docker_register.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# coding:utf-8
# author:Dzer0
# 作用,将docker仓库的数据更新到数据库
import os,json
def registry(user,password,domain):
results=[]
url_rongqi = "curl -X GET -k https://" + user + "':'"+ password + "'@'" + domain + "/v2/_catalog 2>/dev/null"
response=os.popen(url_rongqi).readlines()
#print response
names=json.loads(response[0])
for name in names['repositories'] :
url_version = "curl -X GET -k https://" + user + "':'"+ password + "'@'" + domain + "/v2/"+name+"/tags/list 2>/dev/null"
#print url_version
response=os.popen(url_version).readlines()
response=json.loads(response[0])
#print response
results.append(response)
'''
for tag in response["tags"]:
url_createtime = "curl -X GET -k https://" + user + "':'" + password + "'@'" + domain + "/v2/" + response['name'] + "/manifests/" + tag
print url_createtime
results.append(response['name'] +":"+ tag)
#return render(request,'registry.html',{'results':results})
'''
return results
if __name__ == '__main__':
a_ceshi_251 = registry('用户名','密码','私有仓库地址')
print a_ceshi_251

调用views.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ceshi = registry('用户名','密码','私有仓库地址')
jxinfo_all = Test_registers.objects.values('jxinfo').all()
jxinfos = []
for x in jxinfo_all:
jxinfos.append(x['jxinfo'])
jx_version_all = Test_registers.objects.values('version').all()
jxversions = []
for x in jx_version_all:
jxversions.append(x['version'])
for i in ceshi:
version = ','.join(i['tags'])
if i['name'] in jxinfos or version in jxversions:
print i['name']+'exist!'
else:
Test_registers.objects.update_or_create(jxinfo=i['name'],version=version)
return HttpResponseRedirect('/url/')

这里自己感觉写的不是很好,现在先把功能实现,做个记录 等后面面找到更好的方法,再来优化这里。

docker仓库部署地址:http://www.zhizhebuyan.com/post/article_26.html

以上。

支持一下
扫一扫,我会更有动力更新
  • 微信扫一扫
  • 支付宝扫一扫