部署docker仓库-Harbor
Habor是由VMWare公司开源的容器镜像仓库。事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等,足以满足基本企业需求。
官方地址:https://vmware.github.io
Github:https://github.com/goharbor/harbor
Harbor主要功能
Harbor组件
组件 |
功能 |
harbor-adminserver |
配置管理中心 |
harbor-db |
Mysql数据库 |
harbor-jobservice |
负责镜像复制 |
harbor-log |
记录操作日志 |
harbor-ui |
Web管理页面和API |
nginx |
前端代理,前端页面和镜像上传/下载转发 |
redis |
会话 |
registry |
镜像存储 |
Harbor部署
环境要求:
Harbor是VMware公司开源的企业级docker registry项目
项目地址:https://github.com/vmware/barbor
1、下载离线安装包 2、安装docker 3、安装docker-compose 4、自签TLS证书:https://github.com/vmware/harbor/blob/master/docs/configure_https.md 5、Harbor安装与配置 6、Docker主机访问Harbor
https://github.com/goharbor/harbor/blob/master/docs/configure_https.md
https://goharbor.io/docs/1.10/install-config/download-installer/
Harbor安装有3种方式:
? 在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小 ? 离线安装:安装包包含部署的相关镜像,因此安装包比较大 ? OVA安装程序:当用户具有vCenter环境时,使用此安装程序,在部署OVA后启动Harbor
采用离线安装,首先下载离线安装包:https://github.com/vmware/harbor/releases
HTTP方式部署
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce-18.06.1.ce-3.el7 systemctl enable docker && systemctl start docker docker --version #修改仓库地址 cat >/etc/docker/daemon.json <安装docker-compose
方法一: 国内推荐方法 yum install -y epel-release yum install -y docker-compose 方法二: curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose --version 但是此方法会经常因为网络的原因而无法安装 方法三: #1、安装python-pip yum -y install epel-release yum -y install python-pip #2、安装docker-compose pip install docker-compose docker-compose version自签HTTPS证书,可以不配置
mkdir /root/harbor/ssl/ cd /root/harbor/ssl/ openssl req \ -newkey rsa:4096 -nodes -sha256 -keyout ca.key \ -x509 -days 365 -out ca.crt生成域名证书
openssl req \ -newkey rsa:4096 -nodes -sha256 -keyout reg.fage.com.key \ -out reg.fage.com.csr空白处回车不用管,回车即可,注意域名出非常重要,密码可以设置也可以不设置,
颁发证书
openssl x509 -req -days 365 -in reg.fage.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out reg.fage.com.crt主要用到是:reg.fage.com.crt reg.fage.com.key 这个两个文件
开始部署
下载地址:
https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.5.tgz
wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.5.tgz解压文件
tar xf harbor-offline-installer-v1.7.5.tgz cd harbor/编辑配置文件
vim /root/harbor/harbor.cfg 确保下面几个地方没问题,如果不是有80端口,可以加上端口号,不会与其他端口冲突,例如:192.168.10.122
#不加证书http hostname = 192.168.10.122 ui_url_protocol = http harbor_admin_password = Harbor12345 #下面的是加证的配置https hostname = reg.fage.com ui_url_protocol = http ssl_cert = ./ssl/reg.fage.com.crt ssl_cert_key = ./ssl/reg.fage.com.key harbor_admin_password = Harbor12345准备配置文件:
./prepare开始安装并启动barbor
cd /root/harbor/ && ./install.sh验证
cd /root/harbor/ && docker-compose ps需要状态全部为UP才是成功的
浏览器输入地址就可以访问了
http://192.168.10.122
账号:admin
密码:Harbor12345
添加用
在项目中添加成员,或者管理员
上传镜像到harbor
接下来将刚才构建的镜像推送到Harbor仓库,先看看我们要推送的镜像
docker images在推送之前,需要注意第一列,这个完整格式是
regisry.stnrs.com/library/hello-word:latest
镜像中心域名 项目名称 名称 版本
如果镜像只放在本地存储REPOSITORY写什么都可以,但推送到镜像仓库就必须指定仓库中心地址。
所以,先打重命名REPOSITORY,其实就是引用源镜像标记了一个目标镜像
上传镜像需要先登录,不登录会报错
docker image tag nginx 192.168.10.122/library/nginx-1 docker login 192.168.10.122 docker push 192.168.10.122/library/nginx-1
登录网页查看镜像
http://192.168.10.122/harbor/projects/1/repositories
加密的方式
在另外一台主机上安装docker后,把证书拷贝下来,放到需要使用的机器上,因为自签证书不受信任,所以需要将证书文件拿到客户机去解密
首先安装docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce-18.06.1.ce-3.el7 systemctl enable docker && systemctl start docker docker --version创建存放证书的文件夹
mkdir -p /etc/docker/certs.d/reg.fage.com域名解析
echo "192.168.10.112 reg.fagfe.com" >>/etc/hosts拷贝harbor上证书到客户端证书目录下,客户端操作
scp root@192.168.10.112:/root/harbor/ssl/reg.fage.com.crt /etc/docker/certs.d/reg.fage.com/如果没有加入证书就要修改这个文件才能登录
cat >/etc/docker/daemon.json <重置系统环境
systemctl daemon-reload systemctl restart docker.service登录成功后才能上传镜像
docker login reg.fage.com docker login 192.168.10.112 docker image tag nginx-v1 192.168.10.112/nginx-v1 docker push 192.168.10.112/nginx-v1 加密方式 docker login reg.fage.com docker login reg.fage.com docker image tag nginx-v1 reg.fage.com/nginx-v1 docker push reg.fage.com /nginx-v1