搭建docker本地仓库

一 需要条件

需要部署本地仓库的服务器一台(下面简称目标服务器),并且安装docker

二 具体步骤

1.拉取官方仓库镜像registry,放到目标服务器下

[root@docker ~]# docker images
REPOSITORY   TAG           IMAGE ID            CREATED             VIRTUAL SIZE
registry     2             ee585077aecf        21 months ago       33.19 MB

 2.在目标服务器运行镜像

[root@docker ~]# docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2
  • registry镜像的内部端口号为5000
  • -v表示将本地存储空间映射到容器内部,而/var/lib/registry为容器内部的存储位置

3.修改协议

因为docker镜像拉取默认使用的是https协议,不支持http,我们需要将我们的私有仓库设置安全访问,这样就能通过http拉取了

然后在”/etc/docker/“目录下,创建”daemon.json“文件。并添加

[root@docker ~]# cat /etc/docker/daemon.json 
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["docker.erick.com:5000"] # 这里的docker.erick.com换成你的域名或ip
}

备注:有的是通过这种方式进行,我直接通过上面的方式就配置成功了。(centos 6.5)
sudo vim /etc/sysconfig/docker
other_args="--insecure-registry xxx.xxx.xxx.xxx:5000" 修改这一行,xxx是你电脑的IP地址
sudo /etc/init.d/docker restart

重新启动docker:service docker restart

4.上传镜像到私有仓库

1.使用docker tag命令修改目标镜像的名称改为:目标服务器IP(域名):5000/imagename:tag
2.docker push 目标服务器IP(域名):5000/imagename:tag

 5.查看私有仓库

# 在目标服务器查看,刚才我们用-v映射的地址为/myregistry

[root@docker~]# ls /myregistry/docker/registry/v2
blobs/  repositories/
[root@docker~]# ls /myregistry/docker/registry/v2/repositories
imagename:tag


# 也可也登陆对应的网址进行查看
http://docker.erick.com:5000/v2/_catalog

6.拉取镜像

docker pull docker.erick.com:5000/imagename:tag

 7.获取私有仓库中镜像名称的脚本

import requests
import json
import traceback 
repo_ip = '10.100.4.20'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

参考:

Docker 18.03私有仓库搭建

【Docker】创建私有仓库, 查看私有仓库镜像, 方便本地共享

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值