1.准备
https://goharbor.io/docs/2.0.0/install-config/installation-prereqs/https://github.com/goharbor/harbor
安装前需要准备如下环境配置:


下载的离线的安装包的版本如下:

2.安装docker省略

3.安装docker-compose
参考:
http://www.apgblogs.com/centos7-docker/方式一:
#下载docker-composesudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose添加docker-compose运行权限sudo chmod +x /usr/local/bin/docker-compose
方式二:
yum install docker-compose -y查看docker-compose版本docker-compose --version
4.自签TLS证书
官方自签证书文档地址:
https://goharbor.io/docs/2.0.0/install-config/configure-https/参考:
https://cloud.tencent.com/developer/article/1618468将hub的包上传到vm(安装了CentOs7.x的虚拟机上)上,解压:

在解压的home目录下创建一个ssl的目录用于存放生成的证书:

修改主机名
Vi /etc/hostsIp 主机名
自签证书步骤如下:
1、openssl genrsa -out ca.key 40962、openssl req -x509 -new -nodes -sha512 -days 3650 \"/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=bigfei.com" \-key ca.key \-out ca.crt3、openssl genrsa -out bigfei.com.key 40964、openssl req -sha512 -new \"/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=bigfei.com" \-key bigfei.com.key \-out bigfei.com.csr5 openssl x509 -req -sha512 -days 3650 \ca.crt -CAkey ca.key -CAcreateserial \-in bigfei.com.csr \-out bigfei.com.crt6 cat > v3.ext <<-EOFauthorityKeyIdentifier=keyid,issuerbasicConstraints=CA:FALSEkeyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEnciphermentextendedKeyUsage = serverAuthsubjectAltName = @alt_names[alt_names]=bigfei.com=bigfeiEOF7 openssl x509 -req -sha512 -days 3650 \v3.ext \-CA ca.crt -CAkey ca.key -CAcreateserial \-in bigfei.com.csr \-out bigfei.com.crt8cp bigfei.com.crt /data/cert/cp bigfei.com.key /data/cert/9 在/data/cert/路径下执行openssl x509 -inform PEM -in bigfei.com.crt -out bigfei.com.cert10 在etc/docker/mkdir -p ./certs.d/bigfei.com/cp bigfei.com.cert /etc/docker/certs.d/bigfei.com/cp bigfei.com.key /etc/docker/certs.d/bigfei.com/cp ca.crt /etc/docker/certs.d/bigfei.com/11 systemctl restart docker
这一步才是最难的。
5.Docker-Hub的安装与配置
解压缩之后,目录下会生成harbor.conf文件,该文件就是Harbor的配置文件
## Configuration file of Harbor# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost= 172.33.16.1 #需要根据实际情况手动修改# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on= http# mysql数据库root用户默认密码root123,实际使用时修改下= root123= 3customize_crt = onssl_cert = /data/cert/server.crtssl_cert_key = /data/cert/server.keysecretkey_path = /data= NA# 邮件设置,发送重置密码邮件时使用== smtp.mydomain.com= 25= sample_admin@mydomain.com= abc= admin= false# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345= Harbor12345# 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证= db_auth# LDAP认证时配置项#ldap_url = ldaps://ldap.mydomain.com#ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com#ldap_search_pwd = password#ldap_basedn = ou=people,dc=mydomain,dc=com#ldap_filter = (objectClass=person)#ldap_uid = uid#ldap_scope = 3#ldap_timeout = 5# 是否开启自注册self_registration = on# Token有效时间,默认30分钟= 30# 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)= everyone= on

执行如下命令安装前配置准备:


执行:sudo ./install.sh 安装
遇到如下错误:

解决方法:这个报错说的是你当前的docker版本太低,所以只要去重新安装一个高版本的docker到这一步就不会报错了
https://github.com/goharbor/harbor/issues/2317配置软连接:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose启动Harbor服务:

Restart Harbor:
docker-compose up -d#-d表示后台运行
停止并删除现有实例:
如果Harbor正在运行,执行以下命令,可以停止并删除现有实例。If Harbor is running, stop and remove the existing instance.Your image data remains in the file system, so no data is lost.数据保留在文件系统中,因此不会丢失任何数据。docker-compose down -v
6.宿主机访问docker-hub主页

修改本机的hosts的域名和ip的映射



账户:admin
密码:123456


7.其它虚拟docker环境登录hubor
登录出现这个问题:
参考:https://blog.csdn.net/tink_bell/article/details/89329791Error response from daemon: Get https://bigfei.com/v2/: dial tcp 192.168.23.128:443: connect: connection refused
报这个错误可能有如下2个原因:
1)是端口错了
2)未在docker启动文件中添加--insecure-registry信任关系!大多数这个错误是第2个原因,因为你没有添加信任关系的话,docker默认使用的是https协议,所以端口不对(443),会报连接拒绝这个错误;或者提示你 "服务器给HTTPS端的是HTTP响应" 这个错误,因为你没添加端口信任,服务器认为这是默认的https访问,返回的却是http数据!
解决方法:
正确的添加信任关系包括端口号:注:记住,这是harbor镜像仓库,而不是单纯的registry容器仓库!如果你用的是默认的80端口,则不需要加,或者加上80也行,而不是5000这个端口![root@localhost harbor]# tee /etc/docker/daemon.json <<-'EOF'{"insecure-registries": ["xxxxx" #harbor服务主机ip,如果不是80端口,一定要把端口同时添加进去]}EOF

重启docker:
systemctl daemon-reloadsystemctl restart docker
进入hubor路径下重启docker-hub:

docker-compose down -vdocker-compose up -d

# 指定用户名和密码登录:docker login -u bigfei.com -p xxxxx# 免密登录:docker login bigfei.com# 其它docker主机登录还需要将hubor主机上的证书拷贝到cp bigfei.com.crt /etc/docker/certs.d/bigfei.com/
8.推送镜像

在项目中标记镜像:
docker tag SOURCE_IMAGE[:TAG] bigfei.com/myhub/IMAGE[:TAG]
推送镜像到当前项目:
docker push bigfei.com/myhub/IMAGE[:TAG]
将自制的最小的jre8的镜像推送到私有Docker-hub仓库中如下图所示:

9.通过dockerfile构建JDK最小镜像前奏
# 参考:https://www.cnblogs.com/woshimrf/p/5883037.htmluname -a
# jdk8官网下载地址:https://www.java.com/en/download/linux_manual.jsp# 最新jdk官网下载地址:17/18https://www.oracle.com/java/technologies/downloads/

9.1 解压jre
tar -zxvf jre-8u271-linux-x64.tar.gz
9.2 删除无用文件
# cd /jre1.8.0_271/# rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt Welcome.html# rm -rf lib/plugin.jar \\bin/javaws \lib/javaws.jar \lib/desktop \plugin \lib/deploy* \lib/*javafx* \lib/*jfx* \lib/amd64/libdecora_sse.so \lib/amd64/libprism_*.so \lib/amd64/libfxplugins.so \lib/amd64/libglass.so \lib/amd64/libgstreamer-lite.so \lib/amd64/libjavafx*.so \lib/amd64/libjfx*.so
tar zcvf jre1.8.0_271.tar.gz *
将该压缩包mv 到 ~下





9.6 构建最小jre的docker镜像
docker build -t zlf/jre:1.8 -f Dockerfile_jre1.8.0_271 .
9.7 测试最小jre的docker镜像
docker run -it zlf/jre:1.8时间同步验证如下:

中文乱码验证如下:

docker run Error: Invalid or corrupt jarfile /xxxx.jar出现的英文invalid or corrupt jarfile /app.jar,中文意思是jarfile/app.jar无效或损坏

参考:
https://www.cnblogs.com/panwenbin-logs/p/10218099.htmlhttps://www.cnblogs.com/liabio/p/11696083.html