docker-compose安装harbor
目录
Harbor 安装环境说明
获取安装包(离线安装方式)
安装harbor
用docker-compose查看Harbor容器的运行状态
Harbor访问测试
上传镜像到Harbor服务器
Harbor配置HTTPS
浏览器访问Harbor,通过HTTPS协议访问
通过Docker命令来访问
一、Harbor 安装环境说明
Linux:CentOS Linux release 7.9.2009 (Core)
docker :20.10.17-3.el7
docker-compose :docker-compose version 1.29.1, build c34c88b2
harbor:2.3.4
获取安装包(离线安装方式)
Releases · goharbor/harbor · GitHub
https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz
安装harbor
wget https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz
tar xf harbor-offline-installer-v2.3.4.tgz -C /usr/local/
cd /usr/local/harbor
#修改配置文件
[root@localhost harbor]# ll
总用量 596292
-rw-r--r-- 1 root root 3361 11月 9 2021 common.sh
-rw-r--r-- 1 root root 610560420 11月 9 2021 harbor.v2.3.4.tar.gz
-rw-r--r-- 1 root root 7844 6月 13 12:31 harbor.yml
-rw-r--r-- 1 root root 7840 11月 9 2021 harbor.yml.tmpl
-rwxr-xr-x 1 root root 2500 11月 9 2021 install.sh
-rw-r--r-- 1 root root 11347 11月 9 2021 LICENSE
-rwxr-xr-x 1 root root 1881 11月 9 2021 prepare
cp harbor.yml.tmpl harbor.yml
#修改hostname、harbor登录密码、关闭https。
vim harbor.yml
hostname: www.myharbor.com
harbor_admin_password: harbor12345
#https:
# https port for harbor, default is 443
# port: 443
# The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
data_volume: /data #这个路径是宿主机的路径,根据实际情况修改成空间大的地方
完成以上操作后,保存退出
#执行安装程序,只安装harbor
./install.sh (前提条件:docker需要启动)
# 除了安装harbor外,还安装公正服务 notary 以及漏洞扫描器 trivy,
./install.sh --with-notary --with-trivy --with-chartmuseum
[root@localhost harbor]# ll
总用量 596300
drwxr-xr-x 3 root root 20 6月 13 12:34 common
-rw-r--r-- 1 root root 3361 11月 9 2021 common.sh
-rw-r--r-- 1 root root 5996 6月 13 12:34 docker-compose.yml
-rw-r--r-- 1 root root 610560420 11月 9 2021 harbor.v2.3.4.tar.gz
-rw-r--r-- 1 root root 7844 6月 13 12:31 harbor.yml
-rw-r--r-- 1 root root 7840 11月 9 2021 harbor.yml.tmpl
-rwxr-xr-x 1 root root 2500 11月 9 2021 install.sh
-rw-r--r-- 1 root root 11347 11月 9 2021 LICENSE
-rwxr-xr-x 1 root root 1881 11月 9 2021 prepare
这时候已经安装完成了!
用docker-compose查看Harbor容器的运行状态
[root@localhost harbor]# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------
harbor-core /harbor/entrypoint.sh Up (healthy)
harbor-db /docker-entrypoint.sh 96 13 Up (healthy)
harbor-jobservice /harbor/entrypoint.sh Up (healthy)
harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up (healthy)
nginx nginx -g daemon off; Up (healthy) 0.0.0.0:80->8080/tcp,:::80->8080/tcp
redis redis-server /etc/redis.conf Up (healthy)
registry /home/harbor/entrypoint.sh Up (healthy)
registryctl /home/harbor/start.sh Up (healthy)
docker-compose基本命令
# 启动Harbor容器
docker-compose start
# 停止Harbor容器
docker-compose stop
# 暂停Harbor容器
docker-compose pause
# 继续运行Harbor容器
docker-compose unpause
# 重启Harbor容器
docker-compose restart
# 停止并删除Harbor容器,加上-v参数可以同时移除挂载在容器上的目录
docker-compose down
# 创建并启动Harbo容器,参数“-d”表示后台运行命令
docker-compose up -d
Harbor访问测试
浏览器输入以下地址或者域名访问Harbor的Web界面,账号密码:admin/harbor12345
本机设置hosts解析
创建用户账号并测试上传镜像
创建test用户,新建项目mytest
test:Test123456
在该项目中添加成员:test,开发者角色
在docker客户端机器上设置/etc/docker/daemon.json文件,指向harbor服务器地址
修改为http方式访问(非加密方式)
"insecure-registries":["www.myharbor.com"]
{
"registry-mirrors": ["https://y9lmbx5j.mirror.aliyuncs.com"],
"log-driver":"json-file",
"log-opts":{
"max-size" :"50m",
"max-file":"1"
},
"insecure-registries":["www.myharbor.com"]
}
# 启动harbor后再修改docker配置文件添加日志,重启harbor会报错,可以在创建harbor之前,修改docker配置文件添加日志
[root@localhost harbor]# docker-compose restart
Restarting harbor-jobservice ... done
Restarting nginx ... done
Restarting harbor-core ... error
Restarting redis ... done
Restarting harbor-db ... done
Restarting registry ... error
Restarting harbor-portal ... done
Restarting registryctl ... error
Restarting harbor-log ... done
ERROR: for registry Cannot restart container 784741e36027bf192a4fcd7f55a87c3c46a5edb2d260bbe6c99b1539667e4b77: failed to initialize logging driver: dial tcp [::1]:1514: connect: connection refused
ERROR: for registryctl Cannot restart container 1e0e79c308e72ea81a24fa3cdf8eeb38722d5fa59a9115d9ca95c37f29a7417d: failed to initialize logging driver: dial tcp [::1]:1514: connect: connection refused
ERROR: for harbor-core Cannot restart container f447ea4319f63e8991efd34c6c0cff0b477321897ed8706e9dcd66ab8e2fa281: failed to initialize logging driver: dial tcp [::1]:1514: connect: connection refused
上传镜像到Harbor服务器
#打标签
docker tag busybox:latest www.myharbor.com/mytest/busybox:v0.1
#登录Harbor服务器
docker login www.myharbor.com
#输入我们在harbor新创建的用户名密码进行登录
#上传镜像
# docker push www.myharbor.com/mytest/busybox:v0.1
The push refers to repository [www.myharbor.com/mytest/busybox]
01fd6df81c8e: Pushed
v0.1: digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee size: 527
在Harbor上可以看到我们上传的镜像
Harbor配置HTTPS
生成TSL证书
# 创建存放证书的临时目录
mkdir -p /data/harbor/cert
cd /data/harbor/cert
# 创建自签名根证书
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=www.myharbor.com" -key ca.key -out ca.crt
# 查看创建的证书
ca.crt ca.key
# 产生证书签名请求
openssl genrsa -out www.myharbor.com.key 4096
openssl req -sha512 -new -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=www.myharbor.com" -key www.myharbor.com.key -out www.myharbor.com.csr
# 查看证书
# ll
总用量 16
-rw-r--r-- 1 root root 2041 6月 13 12:53 ca.crt
-rw-r--r-- 1 root root 3243 6月 13 12:53 ca.key
-rw-r--r-- 1 root root 1712 6月 13 12:54 www.myharbor.com.csr
-rw-r--r-- 1 root root 3247 6月 13 12:54 www.myharbor.com.key
# 为Registry主机产生证书
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=www.myharbor.com
DNS.2=localhost
EOF
openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in www.myharbor.com.csr -out www.myharbor.com.crt
openssl x509 -inform PEM -in www.myharbor.com.crt -out www.myharbor.com..cert
# 查看证书
# ll
总用量 32
-rw-r--r-- 1 root root 2041 6月 13 12:53 ca.crt
-rw-r--r-- 1 root root 3243 6月 13 12:53 ca.key
-rw-r--r-- 1 root root 17 6月 13 12:55 ca.srl
-rw-r--r-- 1 root root 251 6月 13 12:55 v3.ext
-rw-r--r-- 1 root root 2094 6月 13 12:55 www.myharbor.com..cert
-rw-r--r-- 1 root root 2094 6月 13 12:55 www.myharbor.com.crt
-rw-r--r-- 1 root root 1712 6月 13 12:54 www.myharbor.com.csr
-rw-r--r-- 1 root root 3247 6月 13 12:54 www.myharbor.com.key
# 创建Harbor的证书目录
mkdir -p /data/harbor/harbor-cert
# 拷贝harbor-registry证书到Harbor的证书目录
cp www.myharbor.com.crt /data/harbor/harbor-cert
cp www.myharbor.com.key /data/harbor/harbor-cert
# 进入Harbor的安装目录
cd /usr/local/harbor
# 停止并删除Harbor容器,加上-v参数可以同时移除挂载在容器上的目录
docker-compose down
# 修改harbor.yml配置文件
## 打开https配置
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /data/harbor/harbor-cert/www.myharbor.com.crt
private_key: /data/harbor/harbor-cert/www.myharbor.com.key
# 重新生成配置文件
./prepare
# 让Docker客户端默认使用Https协议访问Registry,需要去掉“insecure-registries”相关配置项
# 查看daemon.json文件中是否有"insecure-registries":["harbor.test.com"],如果有则将其删除掉
# 重新加载Docker的配置文件
systemctl daemon-reload
# 重启Docker
systemctl restart docker
# 创建并启动Harbor容器
docker-compose up -d
# docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------------
chartmuseum ./docker-entrypoint.sh Up (healthy)
harbor-core /harbor/entrypoint.sh Up (healthy)
harbor-db /docker-entrypoint.sh 96 13 Up (healthy)
harbor-jobservice /harbor/entrypoint.sh Up (healthy)
harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up (healthy)
nginx nginx -g daemon off; Up (healthy) 0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp
redis redis-server /etc/redis.conf Up (healthy)
registry /home/harbor/entrypoint.sh Up (healthy)
registryctl /home/harbor/start.sh Up (healthy)
trivy-adapter /home/scanner/entrypoint.sh Up (healthy)
问题:原先harbor.yml文件中使用的端口是80,现在把80端口给注释掉,使用443端口了,但是harbor程序还在监听80端口,原因是使用的docker-compose.yml中nginx容器中有个如下的配置:
ports:
- 80:8080
- 443:8443
把80端口的注释掉,然后重启,就只监听443端口了
docker-compose down
docker-compose up -d
# docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------
chartmuseum ./docker-entrypoint.sh Up (healthy)
harbor-core /harbor/entrypoint.sh Up (healthy)
harbor-db /docker-entrypoint.sh 96 13 Up (healthy)
harbor-jobservice /harbor/entrypoint.sh Up (healthy)
harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up (healthy)
nginx nginx -g daemon off; Up (healthy) 0.0.0.0:443->8443/tcp
redis redis-server /etc/redis.conf Up (healthy)
registry /home/harbor/entrypoint.sh Up (healthy)
registryctl /home/harbor/start.sh Up (healthy)
trivy-adapter /home/scanner/entrypoint.sh Up (healthy)
浏览器访问Harbor,通过HTTPS协议访问
通过Docker命令来访问
# 在harbor主机或内网其他机器上
mkdir -p /etc/docker/certs.d/www.myharbor.com
scp ca.crt root@yzg01.com:///etc/docker/certs.d/www.myharbor.com/
# 实践操作:只需要ca.crt文件就行了
#scp www.myharbor.com.cert root@yzg01.com:///etc/docker/certs.d/www.myharbor.com/
#scp www.myharbor.com.key root@yzg01.com:///etc/docker/certs.d/www.myharbor.com/
# 无需重启docker即可生效
docker login www.myharbor.com
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
docker tag busybox:latest www.myharbor.com/mytest/busybox:v0.2
docker push www.myharbor.com/mytest/busybox:v0.2
The push refers to repository [www.myharbor.com/mytest/busybox]
01fd6df81c8e: Layer already exists
v0.2: digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee size: 527
Harbor仓库忘记管理员密码如何重置
步骤01.通过docker exec -it harbor-db /bin/bash
命令进入harbor-db容器内部
步骤02.执行如下postgresql命令行
psql -h postgresql -d postgres -U postgres # 这要输入默认密码:root123
psql -U postgres -d postgres -h 127.0.0.1 -p 5432 # 或者用这个可以不输入密码
步骤03.然后切换到harbor所在的数据库,执行 \c registry
命令
步骤04.执行SQL语句select * from harbor_user;
查看harbor_user表
步骤05.例如修改admin的密码,修改为初始化密码 Harbor12345 修改好了之后再可以从web ui上再改一次。
# 如下此方法不行
update harbor_user set password='a71a7d0df981a61cbb53a97ed8d78f3e',salt='ah3fdh5b7yxepalg9z45bu8zb36sszmr' where username='admin';
# 正确做法
update harbor_user set salt='', password='' where username='admin';
步骤06.执行 \q
退出postgresql,再执行 exit 退出容器。
步骤07.重启harbor服务,以配置中的默认密码进行登陆。
docker-compose安装harbor的更多相关文章
- 手把手教你 Docker Compose安装DOClever
一.什么是Docker Compose以及Docker Compose的安装和使用 查看我的另外一篇博客:Docker Compose的安装和使用 二.DOClever是什么 DOClever是一个可 ...
- Docker Compose 安装 on centos7
本文演示如何在CentOS7上安装Docker Compose. 1 在线安装 1.1 下载安装包 $ curl -L https://github.com/docker/compose/releas ...
- Docker Compose安装以及入门
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用. Compose 简介 Compose 项目是 Docker 官方的开源 ...
- 使用 docker compose 安装 tidb
目标 : 单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群 前提条件: 1.centos版本在7.3 以上 2.安装git 3.安装docker Docker versi ...
- centos docker compose安装
docker compose离线安装 通过联网机器下载docker-compose离线安装包(参见Downloads部分) https://github.com/docker/compose/rele ...
- Docker -compose install Harbor
Docker-compose Harbor install Docker install Yum install docker-compose 首先安装 yum configuation 管理工具 [ ...
- 5.Docker Compose 部署 Harbor
什么是 Harbor Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源 Docker Dis ...
- docker和docker compose安装使用、入门进阶案例
一.前言 现在可谓是容器化的时代,云原生的袭来,导致go的崛起,作为一名java开发,现在慌得一批.作为知识储备,小编也是一直学关于docker的东西,还有一些持续继承jenkins. 提到docke ...
- Docker Compose安装部署Jenkins
流水线可以让项目发布流程更加清晰,docker可以大大减少Jenkins配置. 1.前言 数据卷挂载到 /var 磁盘目录下,因为该磁盘空间较大,后面需要挂载容器数据卷,以防内存吃紧. 为了可以留存启 ...
- Docker Compose安装Registry后配置WebUI与客户端
场景 Docker 私服Registry简介与使用Docker-Compose安装Registry: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...
随机推荐
- Java开发学习(八)----IOC/DI配置管理第三方bean、加载properties文件
前面的博客都是基于我们自己写的类,现在如果有需求让我们去管理第三方jar包中的类,该如何管理? 一.案例:数据源对象管理 本次案例将使用数据源Druid和C3P0来配置学习下. 1.1 环境准备 学习 ...
- 从解析HTML开始,破解页面渲染时间长难题
摘要:在本文中,将重点关注网页的初始渲染,即它从解析 HTML 开始. 我将探索可能导致高渲染时间的问题,以及如何解决它们. 本文分享自华为云社区<页面首屏渲染性能指南>,作者:Ocean ...
- 《Domain Agnostic Learning with Disentangled Representations》ICML 2019
这篇文章是ICML 2019上一篇做域适应的文章,无监督域适应研究的问题是如何把源域上训练的模型结合无lable的目标域数据使得该模型在目标域上有良好的表现.之前的研究都有个假设,就是数据来自哪个域是 ...
- 使用uni-app 地图组件
首先,官方文档:https://uniapp.dcloud.io/component/map.html so,easy 但是没什么用~--~,太简单了 uni-app一般内置的使用的是腾讯地图,这个组 ...
- 分享一些小tips
谷歌浏览器破解 google拓展商店中hackbar地址 https://chrome.google.com/webstore/detail/djmoeoifnlhjolebkehmpaocfnipk ...
- linux常见命令(十)
cut/grep/sort/uniq/wc 连续执行多个命令--;进入/data新建data01目录,在data01目录新建test.txtcd /data;mkdir data01;cd data0 ...
- Linux环境监控工具汇总
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. Linux 操作系统有诸多自带和第三方的监控工具,以下从不同维度来整理常用的一些监控工具. CPU top(经典的Linu ...
- 【springcloud】环境搭建与Rest使快速上手
SpringCloud环境搭建 --- Rest使用 个人主页:https://www.cnblogs.com/xbudian/ 今天来到SpringCloud的学习,我们从spring boot微服 ...
- 轮询以及webSocket与socket.io原理
概述: 首先,我们知道,起初的http协议只是为了能够进行通信而被创造出来(也就是请求-响应的过程).并没有双向通信这一说,后面随着历史业务的需求,人们使用轮询http来解决双向通信也就是使用xhr或 ...
- 来看看这位年轻的 eBay 小伙是如何成为 Committer
介绍一下我自己 目前就职于eBay中国,专注于微服务中间件,分布式架构等领域,同时也是狂热的开源爱好者. 如何成为一个commiter 过去几个月,我一直持续在为 Apache DolphinSche ...