1.准备
Docker-Hub在gitHub上的项目地址的安装文档:
https://goharbor.io/docs/2.0.0/install-config/installation-prereqs/
https://github.com/goharbor/harbor
安装前需要准备如下环境配置:
下载的离线的安装包的版本如下:
2.安装docker省略
尽量安装docker的版本新一点,比如20.x,具体安装请查看前几篇文章。
windows10下安装docker且使用wsl2安装双系统并构建最小jre镜像和应用镜像
CentOs7.9安装Docker,SpringBoot项目分层构建镜像
3.安装docker-compose
方式一:
#下载docker-compose
sudo 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/
将hub的包上传到vm(安装了CentOs7.x的虚拟机上)上,解压:
在解压的home目录下创建一个ssl的目录用于存放生成的证书:
修改主机名
Vi /etc/hosts
Ip 主机名
自签证书步骤如下:
1、openssl genrsa -out ca.key 4096
2、openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=bigfei.com" \
-key ca.key \
-out ca.crt
3、openssl genrsa -out bigfei.com.key 4096
4、openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=bigfei.com" \
-key bigfei.com.key \
-out bigfei.com.csr
5 openssl x509 -req -sha512 -days 3650 \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in bigfei.com.csr \
-out bigfei.com.crt
6 cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=bigfei.com
DNS.2=bigfei
EOF
7 openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in bigfei.com.csr \
-out bigfei.com.crt
8
cp 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.cert
10 在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
hostname = 172.33.16.1 #需要根据实际情况手动修改
# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
ui_url_protocol = http
# mysql数据库root用户默认密码root123,实际使用时修改下
db_password = root123
max_job_workers = 3
customize_crt = on
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
secretkey_path = /data
admiral_url = NA
# 邮件设置,发送重置密码邮件时使用
email_identity =
email_server = smtp.mydomain.com
email_server_port = 25
email_username = sample_admin@mydomain.com
email_password = abc
email_from = admin <sample_admin@mydomain.com>
email_ssl = false
# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345
harbor_admin_password = Harbor12345
# 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
auth_mode = 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分钟
token_expiration = 30
# 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
project_creation_restriction = everyone
verify_remote_cert = 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
9.通过dockerfile构建JDK最小镜像前奏
构建前准备:
参看操作系版本及位数:
uname -a
选择跟当前系统匹配的JDK版本:
# jdk8官网下载地址:
https://www.java.com/en/download/linux_manual.jsp
# 最新jdk官网下载地址:17/18
https://www.oracle.com/java/technologies/downloads/
下载jdk8的Linux(CentOs)安装包如下:
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 \
lib/ext/jfxrt.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
9.3 重新打包
tar zcvf jre1.8.0_271.tar.gz *
将该压缩包mv 到 ~下
9.4 需要准备一个Dockerfile文件和local.md文件:
9.5 构建中需要解决两问题:
一是时区的问题
二是中文乱码的问题
Dockerfile构建文件中含有如下的命令:
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
时间同步验证如下:
中文乱码验证如下:
9.8 构建业务镜像使用ADD命令的一个问题及解决办法:
docker run Error: Invalid or corrupt jarfile /xxxx.jar
出现的英文invalid or corrupt jarfile /app.jar,中文意思是jarfile/app.jar无效或损坏
ADD指令说明:
ADD指令的功能是将主机构建环境(上下文)目录中的文件和目录、以及一个URL标记的文件 拷贝到镜像中。其格式是:ADD 源路径 目标路径如果源路径是个文件,且目标路径是不是以 / 结尾,则docker会把目标路径当作一个文件。如果目标路径不存在,会以目标路径为名创建一个文件,内容同源文件;所以此处犯的错误就是,目标路径app.jar不是一个路径,需要加上“/”,然后就可以成功构建业务镜像了。