Docker-Hubor私有镜像仓库的搭建

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最小镜像前奏

构建前准备:

参看操作系版本及位数:

# 参考:https://www.cnblogs.com/woshimrf/p/5883037.html
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不是一个路径,需要加上“/”,然后就可以成功构建业务镜像了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值