docker镜像仓库harbor

harbor是vmwere公司开源的企业级Docker Registry项目
项目地址:https://github.com.vmwere/harbor

安装和配置指南
1、下载离线安装包
2、安装docker
3、安装docker-compose
4、harbor的安装与配置
5、自签TLS证书
6、访问验证

1、下载安装包

wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.1.tgz

2、安装docker(略)
3、安装docker-compose
运行以下命令以下载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在安装后失败,请检查您的路径。您也可以创建指向/usr/bin或路径中任何其他目录的符号链接。
例如:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试安装

docker-compose --version

解除安装
如果使用curl以下命令进行安装,则要卸载Docker Compose

sudo rm /usr/local/bin/docker-compose

如果使用pip以下命令进行安装,则要卸载Docker Compose

pip uninstall docker-compose

可以参考官网:https://docs.docker.com/compose/install
4、harbor的安装与配置
目标主机的先决条件
Harbor被部署为多个Docker容器,因此可以部署在任何支持Docker的Linux发行版上。目标主机需要Docker和Docker Compose才能安装。、

网络端口


harbor.png

开始安装:
在线安装程序

tar xvf harbor-online-installer- <版本> .tgz

离线安装程序

tar xvf harbor-offline-installer- <版本> .tgz

配置港口
配置参数位于文件Harbor.yml中
有两类参数,必需参数和可选参数。

系统级参数:这些参数需要在配置文件中设置。如果用户对其进行更新harbor.yml并运行install.sh脚本以重新安装Harbor,它们将生效。

用户级别参数:这些参数可以在Web Portal首次启动端口之后更新。特别是,您必须在Harbor中注册或创建任何新用户之前设置所需的auth_mode。当系统中有用户时(默认管理员用户除外),无法更改auth_mode。

参数说明如下-请注意,至少您需要更改主机名属性

必要参数

hostname:目标主机的主机名,用于访问门户网站和注册表服务。它应该是目标计算机的IP地址或标准域名(FQDN),例如192.168.1.10或reg.yourdomain.com。请勿使用localhost或127.0.0.1或0.0.0.0作为主机名-注册表服务必须可由外部客户端访问!

data_volume:存储港口数据的位置。

harbor_admin_password:管理员的初始密码。此密码仅在Harbor启动时才生效。此后,将忽略此设置,并且应该在门户中设置管理员的密码。请注意,默认的用户名/密码为admin / Harbor12345。

database:与本地数据库相关的配置

password:PostgreSQL数据库的根密码。将该密码更改为任何生产用途。
max_idle_conns:空闲连接池中的最大连接数。如果<= 0,则不保留任何空闲连接。默认值为50,如果未配置,则默认值为2。
max_open_conns:与数据库的最大打开连接数。如果<= 0,则打开的连接数没有限制。到Harbor数据库的最大连接数的默认值为100。如果未配置,则值为0。
jobservice:与jobservice相关的服务

max_job_workers:作业服务中最大复制工作者数。对于每个图像复制作业,工作人员会将存储库的所有标签同步到远程目标。增加此数目将允许系统中进行更多并发复制作业。但是,由于每个工作人员都会消耗一定数量的网络/ CPU / IO资源,因此请根据主机的硬件资源仔细选择此属性的值。
log:日志相关的URL

级别:日志级别,选项为调试,信息,警告,错误,致命
local:默认是在本地保留日志。
rotation_count:在删除日志文件之前,将日志文件旋转rotate_count次。如果count为0,则将删除旧版本,而不是旋转旧版本。
rotation_size:仅当日志文件的大小大于rotate_size字节时,才对它们进行旋转。如果大小后跟k,则假定大小为千字节。如果使用M,则大小以兆字节为单位;如果使用G,则大小以千兆字节为单位。因此大小100,大小100k,大小100M和大小100G均有效。
location:存储日志的目录
external_endpoint:启用此选项可将日志转发到syslog服务器。
protocol:syslog服务器的传输协议。默认为TCP。
host:系统日志服务器的URL。
port:syslog服务器侦听的端口

可选参数

*   **http**:

    *   **port**:您http的端口号
*   **https**:用于访问门户网站和令牌/通知服务的协议。如果启用了Notary,则必须设置为*https*。请参阅**[使用HTTPS访问配置Harbor](https://github.com/goharbor/harbor/blob/master/docs/configure_https.md)**。

    *   **port**:https的端口号
    *   **certificate**:SSL证书的路径,仅当协议设置为https时才应用。
    *   **private_key**:SSL密钥的路径,仅当协议设置为https时才应用。
*   **external_url**:如果使用外部代理,则启用它;启用后,主机名将不再使用

*   **clair**:与Clair相关的配置

    *   **updaters_interval**:clair更新程序的间隔,单位为小时,设置为0以禁用更新程序
    *   **http_proxy**:为Clair配置http代理,例如`http://my.proxy.com:3128`。
    *   **https_proxy**:为Clair配置https代理,例如`http://my.proxy.com:3128`。
    *   **no_proxy**:不为Clair配置代理,例如`127.0.0.1,localhost,core,registry`。
*   **chart**:图表相关的配置

    *   **absolute_url**:如果设置为启用图表将使用绝对URL,否则将其设置为禁用,图表将使用相对URL。
*   **external_database**:外部数据库配置,当前仅支持POSTGRES。

    *   **港口**:港口的核心数据库配置
        *   **host**:港口核心数据库的**主机**名
        *   **port**:港口的核心数据库端口
        *   **db_name**:港口核心数据库的数据库名称
        *   **username**:连接港口核心数据库的用户名
        *   **password**:包含核心数据库的密码
        *   **ssl_mode**:启用ssl模式
        *   **max_idle_conns**:空闲连接池中的最大连接数。如果<= 0,则不保留任何空闲连接。预设值为2。
        *   **max_open_conns**:与数据库的最大打开连接数。如果<= 0,则打开的连接数没有限制。默认值为0。
    *   **clair**:clair的数据库配置
        *   **host**:clair数据库的**主机**名
        *   **port**:clair数据库的端口
        *   **db_name**:clair数据库的数据库名称
        *   **用户名**:连接clair数据库的用户名
        *   **password**:clair数据库的密码
        *   **ssl_mode**:启用ssl模式
    *   **notary_signer**:公证人的签署者数据库配置
        *   **host**:公证签名人数据库的**主机**名
        *   **port**:公证签名人数据库的端口
        *   **db_name**:公证签名人数据库的数据库名称
        *   **username**:连接公证签名人数据库的用户名
        *   **密码**:公证签名人数据库的密码
        *   **ssl_mode**:启用ssl模式
    *   **notary_server**:
        *   **host**:公证服务器数据库的**主机**名
        *   **port**:公证服务器数据库的端口
        *   **db_name**:公证服务器数据库的数据库名称
        *   **username**:连接公证服务器数据库的用户名
        *   **password**:公证服务器数据库的密码
        *   **ssl_mode**:启用ssl模式
*   **external_redis**:使用外部Redis的配置

    *   **host**:外部redis的主机
    *   **port**:外部redis的端口
    *   **密码**:连接外部主机的密码
    *   **Registry_db_index**:注册表使用的数据库索引
    *   **jobservice_db_index**:**jobservice的**数据库索引
    *   **chartmuseum_db_index**:**图表博物馆的**数据库索引

配置存储后端(可选)

**storage_service**:默认情况下,Harbor将图像和图表存储在本地文件系统上。在生产环境中,您可以考虑使用其他存储后端而不是本地文件系统,例如S3,OpenStack Swift,Ceph等。这些参数是注册表的配置。

*   **ca_bundle**:定制根ca证书的路径,该证书将注入到注册表和图表存储库的容器的信任存储中。当用户托管带有自签名证书的内部存储时,通常需要这样做。
*   **provider_name**:注册表的存储配置,默认为文件系统。有关此配置的更多信息,请参阅[https://docs.docker.com/registry/configuration/](https://docs.docker.com/registry/configuration/)

重定向:

disable:要禁用注册表重定向时,将disable设置为true

默认安装
Harbor已与Notary和Clair集成(用于漏洞扫描)。但是,默认安装不包括Notary或Clair服务

./install.sh

如果需要自签证书 使用https 请完成第五步操作
可参照官网:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

5、自签TLS证书
使用HTTPS访问配置Harbor
由于Harbor不附带任何证书,因此默认情况下它使用HTTP来满足注册表请求。但是,强烈建议为任何生产环境启用安全性。Harbor有一个Nginx实例作为所有服务的反向代理,您可以使用prepare脚本将Nginx配置为启用https。

在测试或开发环境中,您可以选择使用自签名证书,而不是使用来自受信任的第三方CA的证书。以下内容将向您展示如何创建自己的CA,以及如何使用CA签署服务器证书和客户端证书。

获得证书颁发机构

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=yourdomain.com" \
    -key ca.key \
    -out ca.crt

获取服务器证书
假设注册表的主机名是yourdomain.com,并且其DNS记录指向您正在运行Harbor的主机。在生产环境中,首先应该从CA获得证书。在测试或开发环境中,您可以使用自己的CA。证书通常包含一个.crt文件和一个.key文件,例如yourdomain.com.crt和yourdomain.com.key

1)创建自己的私钥:

  openssl genrsa -out yourdomain.com.key 4096
2)生成证书签名请求:

如果使用像yourdomain.com这样的FQDN 连接注册表主机,则必须将yourdomain.com用作CN(公用名)。

  openssl req -sha512 -new \
    -subj "/C=TW/ST=Taipei/L=Taipei/O=example/OU=Personal/CN=yourdomain.com" \
    -key yourdomain.com.key \
    -out yourdomain.com.csr 
3)生成您的注册表主机的证书:

无论您使用的是诸如yourdomain.com之类的 FQDN 还是用于连接注册表主机的IP,请运行以下命令来生成符合主题备用名称(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=yourdomain.com
DNS.2=yourdomain
DNS.3=hostname
EOF

  openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in yourdomain.com.csr \
    -out yourdomain.com.crt

配置和安装

1)配置用于Harbour的服务器证书和密钥

获取yourdomain.com.crt和yourdomain.com.key文件后,您可以将它们放入目录,例如/root/cert/:

  cp yourdomain.com.crt /data/cert/
  cp yourdomain.com.key /data/cert/ 
2)为Docker配置服务器证书,密钥和CA

Docker守护程序将.crt文件解释为CA证书,并将.cert文件解释为客户端证书。

将服务器转换yourdomain.com.crt为yourdomain.com.cert:

openssl x509 -inform PEM -in yourdomain.com.crt -out yourdomain.com.cert
Delpoy yourdomain.com.cert,yourdomain.com.key以及ca.crt对码头工人:

  cp yourdomain.com.cert /etc/docker/certs.d/yourdomain.com/
  cp yourdomain.com.key /etc/docker/certs.d/yourdomain.com/
  cp ca.crt /etc/docker/certs.d/yourdomain.com/

3)配置港口

编辑文件harbor.yml,更新主机名并取消对https块的注释,并更新属性certificate和private_key:

#设置主机
的主机名: yourdomain.com 

HTTP:
  端口: 80 

HTTPS:
  # HTTPS端口海港,默认为443 
  端口: 443 
  #证书和nginx的密钥文件的路径
  证书: /data/cert/yourdomain.com.crt 
  PRIVATE_KEY: /data/cert/yourdomain.com.key

生成Harbor的配置文件

 ./prepare

如果Harbor已在运行,请停止并删除现有实例。您的图像数据保留在文件系统中

 docker-compose down -v

最后,重新启动Harbor

docker-compose up -d

6、访问验证

docker login 域名
docker push image (首先要改镜像tag)上传镜像
docker pull image 下载镜像

登录web页面验证


harbor.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容