Docker运维教程(7)私有镜像仓库与Harbor

使用Docker Hub虽然方便,但是存在速度慢、不安全等问题,解决方案就是本地搭建一个私有仓库。

一、安装Docker私有仓库docker-distribution(老版本也叫docker-registry)

1、docker-distribution的2种安装方法:

yum install docker-distribution  #使用yum安装

docker run -d -p 5000:5000 -v /docker_registry:/var/lib/registry registry:2  #使用registry官方镜像安装 

2、使用yum安装docker私有仓库的配置与使用

如果使用yum安装的话,Docker registry的主配置文件是/etc/docker-distribution/registry/config.yml,其中可以定义服务的名字(service),仓库的路径(rootdirectory)、端口(addr),如图

docker_registry1.png 

启动Docker仓库 

systemctl start docker-distribution

推送本地镜像到仓库,推送成功后在仓库目录中可以看到镜像目录 

docker image ls  #先查询本地镜像
docker tag myweb:v1 node.linuxe.cn:5000/myweb:v1  #将本地镜像打标签,镜像名myweb前面没有带用户名代表是顶层仓库
docker push node02.linuxe.cn:5000/myweb:v1  #推送镜像到私有仓库
docker pull node02.linuxe.cn:5000/myweb:v1  #从私有仓库下载刚推送的镜像

需要注意的是docker push命令默认是https客户端,而自建的仓库工作在http模式下,所以会出现http:server gave HTTP response to HTTPS clients的错,在Docker客户端上做以下操作可以解决该问题: 

vi /etc/docker/daemon.json
insecure-registries": ["node02.linuxe.cn:5000"]"  #增加一行配置,让docker客户端明确这个仓库是不安全的
systemctl restart docker

二、使用docker repoistry镜像的配置与使用

如果使用的是docker registry镜像,那需要注意repository完整格式为[hostip]:[port]/[username]/xxx:tag的形式,只有Docker Hub上的镜像可以忽略[hostip]:[port]部分。所以我们需要先将之前的镜像重命名,然后push到私有仓库中。

docker tag tanglu86/centos:v1 registry.exampl.net:5000/tanglu86/centos:v1  #将之前的镜像重命名,这样才可以推送到私有仓库中。这里的域名和端口都是私有仓库的默认配置。
docker push registry.exampl.net:5000/tanglu86/centos:v1 

三、安装Harbor让Docker 仓库的Web端更强大

1、由于原始的Docker仓库界面简陋,还无法灵活配置用户权限,唯一好处就是轻量。所以出现了拥有友好Web界面的Harbor仓库,它可以实现用户注册、仓库冗余等功能。为了省去安装harbor繁琐的配置,官方将其做成了镜像,只不过需要单机编排工具compose来完成安装,所以在安装harbor实现web管理之前还要安装docker-compose

yum install docker-compose

2、Harbor托管在Github上,在github.com/vmware/harbor可以看到Harbor的安装说明,包含离线安装还是在线安装、软硬件要求等。这里下载离线包为例进行安装,包比较大,500多M。 

wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.0.tgz

3、下载完成后解压,可以看到install.sh脚本和harbor.cfg配置文件,首先编辑配置文件harbor.cfg 

vi harbor.cfg
hostname = 域名或者IP
ui_url_protocol = http  #http协议,如果使用https协议的话hostname必须修改成证书对应域名
max_job_workers =  3  #处理用户上传下载的并发进程数
customize_crt = on  #是否使用自定义证书,会自动调用openssl来生成证书
ssl_cert = /data/cert/server.crt  #证书文件    
ssl_cert_key = /data/cert/server.key  #证书私钥
harbor_admin_password = Harbor12345  #默认管理密码
db_password = root123  #mysql初始密码

4、配置文件修改完成后运行install.sh以启动Harbor,该脚本会启动很多镜像,因为compose就是一个容器编排工具,使用以下命令可以查看具体compose具体做了什么 

docker-compose ps

5、install.sh脚本运行结束后会有443和80端口监听在本地用于访问到Harbor。这些端口可以通过修改docker-compose.yml中的ports部分实现自定义,前面的端口是宿主机监听的端口,后面是Docker中的端口。Harbor运行后的后续使用就是将本地镜像修改tag并push的过程。 

docker push my.harbor.com/libray/mycentos  #将mycentos镜像上传到仓库的libray项目中

如果修改了Harbor配置的话只需要重启docker-compose即可,因为Harbor是基于Compose来管理的 

docker-compose stop
docker-compose start

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值