===============================================

2018/4/16_第2次修改                       ccb_warlock

更新说明:

2018/4/16:在4.3中增加后台启动容器以实现harbor开机自启的内容;

===============================================

最近一直在用docker容器相关的东西,经常需要使用迁移镜像,在没有私有的镜像仓库前,需要到docker hub上创建用户还要设置镜像加速。

于是先用registry搭建了一个仓库,但是使用的时候发现下面的几个问题:

1.没有界面(这个不排除我的使用方法不对,我只能用url看镜像的信息);

2.配置之后是http的,在json配置后只能使用1个私有库(如果私有库有多个的情况下得来回改配置文件,太麻烦);

因为存在上面2个问题,使得我不得不查找更合理的镜像仓库,由于之前看《京东基础架构建设之路》时看到jdos 2.0的持续集成时使用harbor作为镜像仓库,于是尝试部署了harbor发现其功能确实能满足目前对镜像仓库的需求。


 一、基础设置

 1.1 安装vim、wget

yum install -y vim wget

 1.2 卸载home、扩大root

如果考虑镜像仓库是给研发团队使用,需要配置较大容量的,因为centos安装是默认只给root目录配置50G的空间。

可以根据我之前的笔记(http://www.cnblogs.com/straycats/p/7769105.html),扩大root空间。

 1.3 关闭防火墙

内部镜像库使用,为了部署方便直接关了防火墙。

systemctl stop firewalld
systemctl disable firewalld

 1.4 增加域名解析

ps.由于基于https的harbor需要使用域名,故本次部署的harbor域名为bakreg.cn

# 修改host文件

vim /etc/hosts

# 修改下面的内容,wq保存。

127.0.0.1   localhost bakreg.cn localhost4 localhost4.localdomain4

 1.5 设置主机名

# 这里将主机名设置和内部域名一样。

hostnamectl --static set-hostname bakreg.cn

 1.6 重启OS

reboot

 二、安装docker、docker-compose

由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0。

 2.1 安装docker

yum install -y docker

 2.2 设置docker镜像加速

墙的缘故,访问docker hub不够稳定,故需要设置镜像加速器来解决这个问题。
 这里使用的是阿里云的镜像加速器。登录阿里云后,访问https://cr.console.aliyun.com/#/accelerator

 2.3 启动、开机启动docker

systemctl start docker
systemctl enable docker

 2.4 安装epel

yum install -y epel-release

 2.5 安装pip 

yum install -y python-pip

 2.6 安装docker-compose 

pip install docker-compose

 2.7 查看版本

docker --version
docker-compose --version

 三、添加CA证书

ps.如果需要搭建基于https的harbor需要添加ca证书,如果搭建的是基于http可以跳过该步骤。

# 创建目录/root/cert/

mkdir -p /root/cert/

# 进入目录/root/cert/

cd /root/cert/

# 生成证书请求文件csr(域名bakreg.cn自行修改)

openssl req -nodes -subj "/CN=bakreg.cn" -newkey rsa:2048 -keyout bakreg.cn.key -out bakreg.cn.csr

# 生成有效期10年的CA证书crt

openssl x509 -req -days 3650 -in bakreg.cn.csr -signkey bakreg.cn.key -out bakreg.cn.crt 

# 获取CA私钥srl

openssl x509 -req -in bakreg.cn.csr -CA bakreg.cn.crt -CAkey bakreg.cn.key -CAcreateserial -out bakreg.cn.crt -days 10000

 四、部署harbor

 4.1 获取安装包

官方(https://github.com/vmware/harbor/releases)提供了2种部署包(在线、离线),我选了在线安装包(配了docker加速的情况下,在线包下载镜像的时间要比离线包快很多)。

# 下载在线安装包(下载地址根据官网自行选择,我部署的时候最新是1.4.0)

cd
wget https://storage.googleapis.com/harbor-releases/release-1.4.0/harbor-online-installer-v1.4.0.tgz

# 解压

tar xvf harbor-online-installer-v1.4.0.tgz

 4.2 修改配置文件

# 编辑harbor.cfg

vim /root/harbor/harbor.cfg

# /root/harbor/harbor.cfg文件是Harbor的配置文件,下面列一些可能会修改的项(下面的配置是基于https的harbor,因为https配置后只要在客户机添加证书和域名解析,可以连接多个镜像仓库;如果是http,daemon.json里配置后只能连接一个自己的私有仓库)。

## Configuration file of Harbor

# hostname设置访问地址。可以使用ip、域名、主机名,不可以设置为127.0.0.1或localhost。(如果部署的是备份库,填写ip而不是域名,否则会导致仓库管理连接失败,host无法识别原因不明)
hostname = bakreg.cn # 访问协议。默认是http,如果搭建https的仓库就改为https。
ui_url_protocol = https # 可选的https证书配置地址
ssl_cert = /root/cert/bakreg.cn.crt
ssl_cert_key = /root/cert/bakreg.cn.key # 用于在复制策略中加密或解密远程注册表的密码的密钥路径。secretkey_path不需要修改。如果必须修改它,你需要在/root/harbor/docker-compose.yml中手动调整路径,因为它们是硬编码。
secretkey_path = /data # 邮件设置,发送重置密码邮件时使用
# email_identity作为用户名
email_identity = email_server = 邮箱的smtp服务器域名
email_server_port = 25
email_username =
email_password =
email_from =
email_ssl = false
email_insecure = false # 管理员admin的登录密码。默认是Harbor12345
harbor_admin_password = Harbor12345 # 认证方式。默认是db_auth,支持多种认证方式,如数据库认证(db_auth)、LADP(ldap_auth)。
auth_mode = db_auth # LDAP认证时配置项(这项可以登录后配置也可以)。
ldap_url = # LDAP URL
ldap_searchdn = # LDAP 搜索DN
ldap_search_pwd = # LDAP 搜索DN的密码
ldap_basedn = # LDAP 基础DN
ldap_filter = # LDAP 过滤器
ldap_uid = # LDAP 用户uid的属性
ldap_scope = 2
ldap_timeout = 5 # 是否开启注册。on开启,off关闭。
self_registration = off # Token有效时间。默认30分钟。
token_expiration = 30 # 标记用户创建项目权限控制。默认是everyone(允许所有人创建),也可以设置为adminonly(只能管理员才能创建)
project_creation_restriction = everyone

 4.3 harbor启动、开机启动

cd /root/harbor
./install.sh

由于使用了docker-compose,可以使用后台启动的方式来实现harbor的开机启动功能。

cd /root/harbor

# 停止容器

docker-compose stop

# 后台启动容器

docker-compose up -d

 五、登录

由于服务部署在192.168.3.1,可以根据IP直接访问。

 http访问web:http://192.168.3.1

 https访问web:https://192.168.3.1

使用管理员(admin)登录(没有修改harbor_admin_password的话,密码是Harbor12345)。


 六、向基于http的harbor上传下载镜像

 6.1 客户机配置

Docker从1.3.X之后,与docker registry交互默认使用的是https,然而harbor只提供http服务。为了解决这个问题需要在启动docker时增加启动参数为默认使用http访问。

这里提供2种可行的操作。

 1)修改daemon.json

# 编辑daemon.json

vim /etc/docker/daemon.json

# 添加下面的内容,wq保存。

{
"insecure-registries":["192.168.3.1"]
}

# 重启docker

systemctl restart docker

 2)修改docker.service

# 编辑docker.service

vim /usr/lib/systemd/system/docker.service

# 添加下面的内容,wq保存。

在“ExecStart=”中添加
--insecure-registry 192.168.3.1 \

# 重新载入systemd

systemctl daemon-reload

# 重启docker

systemctl restart docker 

 6.2 上传下载镜像

# docker登录harbor

docker login 192.168.3.1

# 标记镜像nginx:v1为192.168.3.1/你的用户名/nginx:v1

docker tag nginx:v1 192.168.3.1/你的用户名/nginx:v1

# 推送镜像到harbor

docker push 192.168.3.1/你的用户名/nginx:v1

# 拉取镜像

docker pull 192.168.3.1/你的用户名/nginx:v1

# docker退出登录harbor

docker logout 192.168.3.1

 七、向基于https的harbor上传下载镜像

 7.1 客户机配置

由于通过openssl创建的是不可信的,直接拉取或登录时会报“x509: certificate signed by unknown authority”,故需要让客户机信任该证书。

将192.168.3.1中的/root/cert/bakreg.cn.crt迁移到客户机的/root目录中。

# 将bakreg.cn的证书追加到客户机的证书库中

cat /root/bakreg.cn.crt >>/etc/pki/tls/certs/ca-bundle.crt

# 重启docker

systemctl restart docker

# 修改客户机的hosts

vim /etc/hosts

# 增加下面的内容,wq保存。

192.168.3.1 bakreg.cn

 7.2 上传下载镜像

# docker登录harbor

docker login bakreg.cn

# 标记镜像nginx:v1为bakreg.cn/你的用户名/nginx:v1

docker tag nginx:v1 bakreg.cn/你的用户名/nginx:v1

# 推送镜像到harbor

docker push bakreg.cn/你的用户名/nginx:v1

# 拉取镜像

docker pull bakreg.cn/你的用户名/nginx:v1

# docker退出登录harbor

docker logout bakreg.cn

 参考资料:

1. http://blog.csdn.net/aixiaoyang168/article/details/73549898

2. https://github.com/vmware/harbor/blob/master/docs/installation_guide.md

3. http://www.bubuko.com/infodetail-1524567.html

4. https://github.com/vmware/harbor/issues/2208

5. http://blog.51cto.com/aaronsa/1897891

6. https://github.com/vmware/harbor/blob/master/docs/configure_https.md

7. http://dockone.io/question/376

centos7 部署镜像仓库 harbor的更多相关文章

  1. centos7 部署镜像仓库 harbor步骤详解

    一.基础设置  1.1 安装vim.wget yum install -y vim wget  1.2 卸载home.扩大root 如果考虑镜像仓库是给研发团队使用,需要配置较大容量的,因为cento ...

  2. CentOS7.3部署镜像仓库Harbor

    参考文档: harbor介绍:https://github.com/vmware/harbor harbor安装&使用指导:https://github.com/vmware/harbor/b ...

  3. 私有镜像仓库Harbor基础介绍与部署

    企业级私有镜像仓库Harbor 一:介绍 Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为dock ...

  4. docker 镜像仓库 Harbor 部署 以及 跨数据复制

    docker 镜像仓库 Harbor 部署 跨数据复制 Harbor 是 Vmwar 公司开源的 企业级的 Docker Registry 管理项目 它主要 提供 Dcoker Registry 管理 ...

  5. 离线手动部署docker镜像仓库——harbor仓库(HTTPS)

    实验环境: harbor服务器系统:CentOS Linux release 7.5.1804 (Core)harbor服务器IP:10.1.12.114harbor版本:v1.5.0docker版本 ...

  6. 企业级Docker镜像仓库Harbor部署与使用

    yum install docker 官网地址:https://docs.docker.com/compose/install/ 运行此命令以下载Docker Compose的当前稳定版本 1 sud ...

  7. Docker: 企业级镜像仓库Harbor的使用

    上一节,演示了Harbor的安装部署 这次我们来讲解 Harbor的使用. 我们需要了解到: 1. 如何推镜像到镜像仓库 2. 如何从镜像仓库拉取镜像 3. 如何运行从私有仓库拉取的镜像 # 查看 h ...

  8. 私有容器镜像仓库harbor

    私有镜像仓库Harbor 1.Harbor概述 Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用 ...

  9. 企业级镜像仓库harbor搭建

    企业级镜像仓库harbor搭建 一.    Harbor概述 VMware公司最近开源了企业级Registry项目Harbor,其的目标是帮助用户迅速搭建一个企业级的Docker registry 服 ...

随机推荐

  1. 【刷题】洛谷 P3950 部落冲突

    题目背景 在一个叫做Travian的世界里,生活着各个大大小小的部落.其中最为强大的是罗马.高卢和日耳曼.他们之间为了争夺资源和土地,进行了无数次的战斗.期间诞生了众多家喻户晓的英雄人物,也留下了许多 ...

  2. Android指纹识别API讲解,让你有更好的用户体验

    我发现了一个比较怪的现象.在iPhone上使用十分普遍的指纹认证功能,在Android手机上却鲜有APP使用,我简单观察了一下,发现Android手机上基本上只有支付宝.微信和极少APP支持指纹认证功 ...

  3. 【BZOJ3534】重建(矩阵树定理)

    [BZOJ3534]重建(矩阵树定理) 题面 BZOJ 洛谷 题解 这.... 矩阵树定理神仙用法???? #include<iostream> #include<cmath> ...

  4. Mythological VI

    Description 有\(1...n\)一共\(n\)个数.保证\(n\)为偶数. 小M要把这\(n\)个数两两配对, 一共配成\(n/2\)对.每一对的权值是他们两个数的和. 小M想要知道这\( ...

  5. 洛谷 P1270 “访问”美术馆 解题报告

    P1270 "访问"美术馆 题目描述 经过数月的精心准备,Peer Brelstet,一个出了名的盗画者,准备开始他的下一个行动.艺术馆的结构,每条走廊要么分叉为两条走廊,要么通向 ...

  6. 滥用DNSAdmins权限进行Active Directory提权

      0x00 前言 除了在实现自己的DNS服务器功能之外,Microsoft还为该服务器实现自己的管理协议以便于管理与Active Directory域集成.默认情况下,域控制器也是DNS服务器; 大 ...

  7. 响应式开发(六)-----Bootstrap CSS----------Bootstrap文本排版

    Bootstrap 使用 Helvetica Neue. Helvetica. Arial 和 sans-serif 作为其默认的字体栈.使用 Bootstrap 的排版特性,您可以创建标题.段落.列 ...

  8. golang 解码未知键的 json 字符串

    我们可以使用 interface 接收 json.Unmarshal 的结果,然后利用 type assertion 特性来进行后续操作. package main import ( "en ...

  9. Java入门:基础算法之检查奇偶性

    本程序检查一个数是奇数还是偶数. import java.util.Scanner; class CheckEvenOdd { public static void main(String args[ ...

  10. VMware 安装Ubuntu16.04时显示不全的解决方法

    实际安装时发现进行到分区这个步骤时,看不到下面的按钮, 百度后得知有此遭遇的不在少数,是因为系统默认分辨率与电脑分辨率的差异导致的. 解决方法也很简单粗暴: 左手按住alt键右手鼠标往上拖动安装界面, ...