centos7 部署镜像仓库 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
centos7 部署镜像仓库 harbor步骤详解的更多相关文章
- centos7 部署镜像仓库 harbor
=============================================== 2018/4/16_第2次修改 ccb_warlock 更新 ...
- CentOS7.3部署镜像仓库Harbor
参考文档: harbor介绍:https://github.com/vmware/harbor harbor安装&使用指导:https://github.com/vmware/harbor/b ...
- 离线手动部署docker镜像仓库——harbor仓库(HTTPS)
实验环境: harbor服务器系统:CentOS Linux release 7.5.1804 (Core)harbor服务器IP:10.1.12.114harbor版本:v1.5.0docker版本 ...
- 私有镜像仓库Harbor基础介绍与部署
企业级私有镜像仓库Harbor 一:介绍 Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为dock ...
- CentOS7/RHEL7安装Redis步骤详解
CentOS7/RHEL7安装Redis步骤详解 CentOS7/RHEL7安装Redis还是头一次测试安装了,因为centos7升级之后与centos6有比较大的区别了,下面我们就一起来看看Cent ...
- Linux centos7环境下安装JDK的步骤详解
Linux centos7环境下安装JDK的步骤详解 测试root用户下JAVA版本 输入命令: java –version 1.先到Oracle官网里下载好jdk,网址如下: http://ww ...
- Linux centos7环境下安装MySQL的步骤详解
Linux centos7环境下安装MySQL的步骤详解 安装MySQL mysql 有两个跟windows不同的地方 1).my.ini 保存到/etc/my.ini 2).用户权限,单独用户执行 ...
- docker 镜像仓库 Harbor 部署 以及 跨数据复制
docker 镜像仓库 Harbor 部署 跨数据复制 Harbor 是 Vmwar 公司开源的 企业级的 Docker Registry 管理项目 它主要 提供 Dcoker Registry 管理 ...
- 企业级Docker镜像仓库Harbor部署与使用
yum install docker 官网地址:https://docs.docker.com/compose/install/ 运行此命令以下载Docker Compose的当前稳定版本 1 sud ...
随机推荐
- vue中监听返回键
问题:在项目中,我们常常有需求,当用户在填写表单时,点击返回的时候,我们希望加一个弹窗,确认离开吗,确认将保存为草稿 解决方案:利用 H5的 pushstate(个人理解为增加页面栈)特性与onpop ...
- 四、附加到进程调试(.NET Core)
1.安装.net core windows server托管工具包: 1.下载https://dotnet.microsoft.com/download/thank-you/dotnet-runtim ...
- CMSIS-DAP
https://www.jixin.pro/bbs/topic/4187 https://lceda.cn/jixin002/stm32f103c8t6_cmsis-dap http://tieba. ...
- ERROR- 开发常见error
一,数据插入MySql中出现中文乱码 解决办法有: 1.新建数据库选择 create database 'GG' CHARACTER SET 'utf8 ' COLLATE 'utf8_general ...
- Sass--混合宏 VS 继承 VS 占位符
什么时候用混合宏,什么时候用继承,什么时候使用占位符?”其实他们各有各的优点与缺点,先来看看他们使用效果: a) Sass 中的混合宏使用 总结:编译出来的 CSS 清晰告诉了大家,他不会自动合并相同 ...
- vue2.0 使用 vue-aplayer
1.安装 npm i vue-aplayer 2.引入 import VueAplayer from 'vue-aplayer' name: "Aplayer", props: [ ...
- HTML 地理定位 的实例
<!DOCTYPE html> <html lang="en"> <head> <title>地理定位</title> ...
- jmeter 参数化2_CSV Data Set Config
CSV Data Set Config:适用于参数取值范围较大的时候使用,该方法具有更大的灵活性 操作路径:HTTP取样器-->Add-->Config Element-->CSV ...
- bzoj4036 [HAOI2015]按位或 状压DP + MinMax 容斥
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4036 题解 变成 \(2^n-1\) 的意思显然就是每一个数位都出现了. 那么通过 MinMa ...
- react-jsx和数组
JSX: 1.全称:JavaScriptXML, 2.react定义的一种类似于XML的JS扩展语法:XML+JS 3.作用:用来创建react虚拟DOM(元素)对象 var ele=<h1&g ...