通过下列几个步骤就可以轻松的完成
1.拉取私有镜像库专属镜像registry
docker pull registry
2. 创建私有仓库的容器 (私有镜像存储位置:/opt/data/registry)
1>. 创建相应文件夹 /opt/data/registry
2>. 给文件夹授权: chmod +777 /opt/data/registry
3>.run镜像库并制定镜像存储位置 docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
3.镜像制作
1> pull 一个小的样例镜像 sudo docker pull busybox
2>添加标签 sudo docker tag busybox 172.16.0.119:5000/busybox
3>修改nano /usr/lib/systemd/system/docker.service 文件,在启动项中添加--insecure-registry=172.16.0.119:5000 \
目的是为了解决1.3以后的docker 的私有镜像库只能用https来访问的问题。
4>重启
systemctl daemon-reload
systemctl restart docker
5>重启docker服务后,将容器重启
docker start $(docker ps -aq)
4.push 镜像到私有仓库 sudo docker push 172.16.0.119:5000/busybox
sudo docker push 172.16.0.119:5000/busybox
5、查看私有镜像库(需要python 支持)
1> 创建文件 mkdir /opt/scripts
2> nano get.py (该脚本源自网络 http://www.cnblogs.com/Tempted/p/7768564.html )
yum -y install epel-release
yum -y install python-pip
yum clean all
pip install requests (centos7,自带python为2.7)
get.py:
import requests import json import traceback repo_ip = '192.168.0.153' repo_port = 5000 def getImagesNames(repo_ip,repo_port): docker_images = [] try: url = "http://" + repo_ip + ":" +str(repo_port) + "/v2/_catalog" res =requests.get(url).content.strip() res_dic = json.loads(res) images_type = res_dic['repositories'] for i in images_type: url2 = "http://" + repo_ip + ":" +str(repo_port) +"/v2/" + str(i) + "/tags/list" res2 =requests.get(url2).content.strip() res_dic2 = json.loads(res2) name = res_dic2['name'] tags = res_dic2['tags'] for tag in tags: docker_name = str(repo_ip) + ":" + str(repo_port) + "/" + name + ":" + tag docker_images.append(docker_name) print docker_name except: traceback.print_exc() return docker_images a=getImagesNames(repo_ip, repo_port) #print a
3>执行 python get.py 查看私有镜像库