使用nexus3作为Docker镜像仓库

一、在容器中安装运行nexus3

为了方便起见,这里使用脚本来处理安装运行。
在一个空目录中新建一个shell脚本文件,比如gen.sh,内容如下

# 所有操作在子目录中完成
mkdir -p output
cd output
# 创建辅助文件
echo subjectAltName=IP:192.168.1.8 > extfile.cnf
# 生成ca证书
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -days 10000 -out ca.crt
# 如果不想交互输入证书的国家,城市,公司名等等信息,可以在上面的命令加上参数:-subj "/CN=*"
# 生成server证书
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=192.168.1.8" -out server.csr
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile exefile.cnf -out server.crt -days 10000
# 将证书导出成pkcs格式
# 这里需要输入密码  输入“password”,如果不用这个,需要修改镜像里的${jetty.etc}/jetty-https.xml对应的password
openssl pkcs12 -export -out keystore.pkcs12 -inkey server.key -in server.crt
# 复制需要的文件到上层目录
cp keystore.pkcs12 ..
# 复制ca.crt到系统
sudo cp ca.crt /usr/local/share/ca-certificates/nexus3.crt
# 更新证书
sudo update-ca-certificates
# 删除辅助文件
rm extfile.cnf
cd ..

# 构建镜像
sudo podman build -t nexus3-https:v1 .
# 创建主机映射目录
sudo mkdir -p /nsd/nexus
sudo chown 200:200 /nsd/nexus -R
# 启动镜像
# 8433作为nexus3 web的https端口
# 8081作为nexus3 web的http端口
# 5051作为docker 本地仓库的端口
# 5052作为docker 代理的端口
sudo podman run -d --restart=always --rm -p 8443:8443 -p 8081:8081 -p 5051:5051 -p 5052:5052 --name nexus3 -v /nsd/nexus:/nexus-data nexus3-https:v1

此脚本中复制ca.crt到系统中的路径为ubuntu 21.10中的路径,其它版本的Linux会有一些差异。
ubuntu存放证书的目录有3个:

  1. /usr/local/share/ca-certificates
  2. /usr/share/ca-certificates
  3. /etc/ssl/certs

这三个的级别是越来越高,/etc/ssl/certs是系统级的,如果放在/etc/ssl/certs中则可以不用update-ca-certificates直接生效,其它的需要执行一次update-ca-certificates才会生效(update-ca-certificates其实就是创建链接到/etc/ssl/certs目录)。

然后执行gen.sh脚本:

sh gen.sh
witton@witton:~$ sh gen.sh 
Generating RSA private key, 2048 bit long modulus (2 primes)
...............+++++
..
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值