本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • Docker
  • Docker运维教程(7)私有镜像仓库与Harbor

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

发布:TangLu2019-3-11 15:21分类: Docker 标签: docker k8s

使用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


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《Docker运维教程(7)私有镜像仓库与Harbor
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-471.html  [生成短网址]

已有 0/1412 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~