1.1 harbor介绍

  1、Harbor简介

      1. Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。

      2. 镜像的存储harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。

      3. harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。

      4. harbor以docker-compose的规范形式组织各个组件,并通过docker-compose工具进行启停。

      5. docker的registry是用本地存储或者s3都是可以的

      6. Harbor的镜像拷贝功能是通过docker registry的API去拷贝,这种做法屏蔽了繁琐的底层文件操作

  2、Harbor架构图

      

  3、主要组件

      

1.2 Harbor安装

  1、参考文档及安装步骤梳理

      下载v1.4.0版本harbor:https://github.com/goharbor/harbor/releases?after=v1.5.0-rc5

      安装参考文档:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

      配置证书:https://github.com/goharbor/harbor/blob/master/docs/configure_https.md

      1、  下载离线安装包

      2、  安装docker

      3、  安装docker-compose

      4、  自签TLS证书

      5、  Harbor安装与配置

      6、  Docker主机访问Harbor

  2、安装docker和docker-compose(192.168.56.14)

# 1)安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 # 2)添加Docker软件包源(否则doker安装的不是新版本)
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo # 3)安装Docker CE
yum install -y docker-ce # 4)启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker # 5)安装docker compose
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version # 测试docker-compose是否安装好

   2、安装Harbor

'''安装Harbor镜像仓库'''
# 1、下载离线安装包
https://github.com/goharbor/harbor/releases # 2、解压并配置访问地址'''
cd /home/work
tar zxvf harbor-offline-installer-v1.8.1.tgz
cd /home/work/harbor
vi harbor.yml
'''
hostname = 192.168.56.14
harbor_admin_password = 123456
''' # 3、准备配置
./prepare # 4、导入镜像并启动
./install.sh # 5、查看容器状态
docker-compose ps 安装完成后可以登录Harbor:http://192.168.56.14

1.3 为Harbor配置Https

  1、简介      

      1. 配置ssl证书https://github.com/goharbor/harbor/blob/master/docs/configure_https.md

      2. 由于Harbor没有附带任何证书,所以它默认使用HTTP来服务注册表请求,但是,强烈建议为任何生产环境启用安全性。

      3. 在测试或开发环境中,您可以选择使用自签名证书,而不是来自受信任的第三方CA的证书。

  2、获得CA证书颁发机构(CN为域名)

mkdir /home/work/harbor/ssl/  # 创建一个ssl目录用来存放要创建的证书
cd /home/work/harbor/ssl # 获得CA证书颁发机构(CN为域名,最好为主机名)
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=TW/ST=Taipei/L=Taipei/O=example/OU=Personal/CN=linux-node4.example.com" \
-key ca.key \
-out ca.crt

  3、获取服务器证书

      1. 假设注册表的主机名是linux-node4.example.com,其DNS记录指向运行Harbor的主机。

      2. 在生产环境中,您首先应该从CA获得证书,在测试或开发环境中,您可以使用自己的CA。

      3. 证书通常包含一个.crt文件和一个.key文件,例如linux-node4.example.com.crt和linux-node4.example.com.key。

# 创建自己的私钥
openssl genrsa -out linux-node4.example.com.key 4096
# 生成部署请求认证
# 如果使用像linux-node4.example.com这样的FQDN连接注册表主机,则必须使用linux-node4.example.com作为CN(通用名称)。
openssl req -sha512 -new \
-subj "/C=TW/ST=Taipei/L=Taipei/O=example/OU=Personal/CN=linux-node4.example.com" \
-key linux-node4.example.com.key \
-out linux-node4.example.com.csr

  4、为注册的主机生成证书

      1. 无论您使用的是像linux-node4.example.com这样的FQDN还是IP来连接注册表主机

      2. 都可以运行这个命令来生成符合Subject Alternative Name (SAN)和x509 v3扩展要求的注册表主机证书

# 生成v3.ext文件
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names [alt_names]
DNS.1=linux-node4.example.com
DNS.2=linux-node4.example
DNS.3=example
EOF # 生成证书
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in linux-node4.example.com.csr \
-out linux-node4.example.com.crt

  5、为Harbor配置服务器证书和密钥

# 在获得linux-node4.example.com.crt和linux-node4.example.com.key文件之后,可以将它们放入/data/cert/这样的目录中
mkdir -p /data/cert
cp linux-node4.example.com.crt /data/cert/
cp linux-node4.example.com.key /data/cert/

  6、为Docker配置服务器证书、密钥和CA

# Docker守护进程将.crt文件解释为CA证书,将.cert文件解释为客户机证书
# 将服务器linux-node4.example.com.crt转换为linux-node4.example.com.cert
openssl x509 -inform PEM -in linux-node4.example.com.crt -out linux-node4.example.com.cert # 为docker部署 linux-node4.example.com.cert、linux-node4.example.com.key和ca.crt
mkdir -p /etc/docker/certs.d/linux-node4.example.com/
cp linux-node4.example.com.cert /etc/docker/certs.d/linux-node4.example.com/
cp linux-node4.example.com.key /etc/docker/certs.d/linux-node4.example.com/
cp ca.crt /etc/docker/certs.d/linux-node4.example.com/

  7、配置Harbor

# 编辑文件端口,更新主机名并取消对https块的注释,更新属性证书和private_key
#set hostname
hostname: linux-node4.example.com
harbor_admin_password: 123456 http:
port: 80 https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /data/cert/example.com.crt
private_key: /data/cert/example.com.key

  8、为Harbor重新生成配置文件

#1、为Harbor重新生成配置文件
./prepare #2、如果Harbor已经运行,则停止并删除现有实例,镜像数据仍然保存在文件系统中
docker-compose down -v #3、重启harbor
docker-compose up -d #4、此时可以通过浏览器访问https: https://192.168.56.14/harbor/projects #5、可以在linux-node4.example.com本机上测试docker登录
docker login linux-node4.example.com

  9、在其他docker机器中配置登录harbor(192.168.56.13)

mkdir -p /etc/docker/certs.d/linux-node4.example.com/
scp -r root@192.168.56.14:/home/work/harbor/ssl/linux-node4.example.com.cert /etc/docker/certs.d/linux-node4.example.com/
scp -r root@192.168.56.14:/home/work/harbor/ssl/linux-node4.example.com.key /etc/docker/certs.d/linux-node4.example.com/
scp -r root@192.168.56.14:/home/work/harbor/ssl/ca.crt /etc/docker/certs.d/linux-node4.example.com/
vi /usr/lib/systemd/system/docker.service # 添加--insecure-registry 192.168.56.14
'''
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.56.14
'''
systemctl restart docker.service # 重启docker

111111

 

1111111111111111

03: 使用docker搭建Harbor私有镜像仓库的更多相关文章

  1. 搭建Harbor私有镜像仓库--v1.5.1

     搭建Harbor私有镜像仓库--v1.5.1 1.介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境 ...

  2. docker搭建harbor私有镜像库

    创建harbor私有镜像库 一.部署准备: harbor软件包   在部署节点上: 1)解压harbor的软件包将harbor目录下所有文件发送到/opt/目录下   tar zxvf harbor- ...

  3. 利用docker搭建本地私有镜像仓库

    主机名 角色 sht-sgmhadoopcm-01 Docker Repository sht-sgmhadoopnn-01 Docker Client 1. 在两台节点分别安装docker http ...

  4. harbor私有镜像仓库的搭建与使用与主从复制

    harbor私有镜像仓库,私有仓库有两种,一种是harbor,一种是小型的私有仓库,harbor有两种模式,一种是主 从,一种是高可用仓库,项目需求,需要两台服务器,都有docker.ldap权限统一 ...

  5. 部署Harbor私有镜像仓库

    Harbor私有镜像仓库无坑搭建 目录 1. harbor介绍 2. docker-ce的安装 3. docker-compose的安装 4. Harbor私有仓库的安装 5. 客户端连接镜像仓库配置 ...

  6. Harbor私有镜像仓库(上)

    上图配置为工作环境 特别注意:win10现在不允许使用私有ca证书,到时登录浏览器会失败,可以选用火狐浏览器. 创建自己的CA证书 openssl req -newkey rsa:4096 -node ...

  7. Harbor私有镜像仓库(下)

    Harbor私有镜像仓库(下) 链接:https://pan.baidu.com/s/1MAb0dllUwmoOk7TeVCZOVQ 提取码:ldt5 复制这段内容后打开百度网盘手机App,操作更方便 ...

  8. k8s创建harbor私有镜像仓库

    1. 部署准备 准备harbor软件包 在部署节点上: mv harbor-offline-installer-v1.4.0.tgz /opt/ && cd /opt tar zxvf ...

  9. harbor 私有镜像仓库使用

    使用harbor私有镜像仓库 登录镜像仓库reg.lvusyy.com docker login reg.lvusyy.com [centos@k8smaster ~]$ sudo docker lo ...

随机推荐

  1. 记录下:nth-child在table中遇到的问题~(已解决)

    首先做了一个表格,如下: <!DOCTYPE html> <html> <head> <title></title> <style t ...

  2. 导出csv文件(使用a标签)

    https://blog.csdn.net/oscar999/article/details/16342699   productsCSV(e) { const { download } = this ...

  3. redis 日志等级说明

    redis loglevel 安装默认的设置为 verbose 1)debug:会打印出很多信息,适用于开发和测试阶段 2)verbose(冗长的):包含很多不太有用的信息,但比debug要清晰一些 ...

  4. PWM 定义

    简单的说,比如你有5V电源,要控制一台灯的亮度,有一个传统办法,就是串联一个可调电阻,改变电阻,灯的亮度就会改变.还有一个办法,就是PWM调节.不用串联电阻,而是串联一个开关.假设在1秒内,有0.5秒 ...

  5. 奇怪的 Markdown / LaTeX 笔记

    记一下日常见到的一些奇怪的 Markdown / LaTeX 用法... Markdown LaTeX LaTeX 数学 1. 运算符 1.1 造运算符: a \operatorname{sin} c ...

  6. 金蝶K3 WISE 13.1版本服务器虚拟机环境部署

    闲来无事,整个13.1版本的金蝶玩玩. 系统环境:WIN2008 R2,x64位 数据库:MSSQL 2008 R2,X64位 记录下操作步骤: 1.准备安装软件,见图: 2.安装资源包,.net3. ...

  7. [BZOJ4305]数列的GCD:莫比乌斯反演+组合数学

    分析 一开始想的是对恰好\(k\)个位置容斥,结果发现对\(\gcd\)有些无从下手,想了想发现自己又sb了. 考虑对\(\gcd\)进行容斥处理,弱化条件,现在我们要求的是使\(\gcd\)是\(d ...

  8. D. Print a 1337-string...

    D. Print a 1337-string... 输出一个字符串 里面包含n个子序列 1337 #include<bits/stdc++.h> using namespace std; ...

  9. 根据linux自带的JDK,配置JAVA_HOME目录

    在配置hadoop是,进行格式化hadoop的时候,出现找不到jdk 我用centos6.5是64位的, 发现本机有java ,就找了一下其位置 找到了jdk-1.7.0_75 which java ...

  10. lnmp源码搭建

      Nginx工作原理 这里需要结合Apache的工作,对PHP文件处理过程的区别 1:Nginx是通过php-fpm这个服务来处理php文件        2:Apache是通过libphp5.so ...