通过下列几个步骤就可以轻松的完成

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  查看私有镜像库


      


      
Logo

开源、云原生的融合云平台

更多推荐