Nexus OSS的安装、使用
前言最新的Nexus 3支持Docker仓库的管理、Maven仓库的管理、Windows开发组件的管理。安装Docker方式要求数据和程序分离,开机自启动mkdir /data/nexus-data && chown -R 200 /data/nexus-datadocker run -d --restart=always -p 8081:8081 --name nexus -v /data/ne
一、前言
最新的Nexus 3支持Docker仓库的管理、Maven仓库的管理、Windows开发组件的管理。
环境:
Ubuntu 14.04.4 LTS
docker-engine 17.05.0-ce
注意事项:
修改密码等操作只能在https下执行。
二、安装
1. Docker方式
- 启动
要求数据和程序分离,开机自启动
# mkdir /data/nexus && chown -R 200 /data/nexus
# mkdir /temp/nexus && chown -R 200 /temp/nexus
# docker run -d --restart=always \
-p 8081:8081 -p 8082:8082 -p 8443:8443 -p 9082:9082 \
--name nexus \
-v /data/nexus/home:/nexus-data \
-v /data/nexus/data:/nexus-data/blobs \
-v /data/nexus/conf:/nexus-data/etc \
-v /temp/nexus/log:/nexus-data/log \
-v /temp/nexus/tmp:/nexus-data/tmp \
sonatype/nexus3
DOCKER_OPTS是为了让jenkins的Docker build step plugin访问
默认用户名密码: admin / admin123
- 查看Log
# docker logs -f nexus
- 登录进 nexus docker
# docker exec -i -t nexus /bin/bash
2. 安装包方式
- 下载安装
登录服务器,执行以下命令
# cd /opt
# wget https://download.sonatype.com/nexus/3/nexus-3.2.0-01-unix.tar.gz
# tar zxvf nexus-3.2.0-01-unix.tar.gz
ln -s nexus-3.2.0-01 nexus
解压后,在当前目录中除了nexus-3.2.0-01还有一个sonatyoe-work目录,用户存放仓库数据的,可根据需要将其改为其他路径,或使用软链接的方式。
# useradd -r nexus –shell /bin/bash
# chown -hR nexus:nexus /opt/nexus
- 修改分离数据存储路径
编辑nexus-3.2.0-01/bin/nexus.vmoptions文件。
我们只需要改下日志存放路径、数据存放路径以及临时存放路径即可,分别对应着以下属性:
-XX:LogFile=/data/nexus-data/nexus3/log/jvm.log
-Dkaraf.data=/data/nexus-data/nexus3
-Djava.io.tmpdir=/data/nexus-datanexus3/tmp
- 以非root运行,这步有问题,先跳过
编辑/opt/nexus-3.2.0-01/bin/nexus.rc,添加以下内容即可:
run_as_user="nexus"
- 最后启动nexus:
# /opt/nexus-3.2.0-01/bin/nexus start
三、配置
1. 使能SSL
要想能远程push、pull,必须让nexus支持ssl。
- 容器开启监听ssl协议端口
编辑/data/nexus-data/nexus3/etc/nexus.properties
# Jetty section
# application-port=8081
**application-port-ssl=8443**
# application-host=0.0.0.0
# nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
**nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml,**/data/nexus-data/nexus3/etc/jetty-https.xml**,${jetty.etc}/jetty-http-redirect-to-https.xml**
# nexus-context-path=/${NEXUS_CONTEXT}
**ssl.etc=/opt/sonatype/sonatype-work/nexus3/etc/ssl**
# Nexus section
# nexus-edition=nexus-pro-edition
# nexus-features=\
# nexus-pro-feature
- 生成自签名证书
# cd /data/nexus-data/nexus3/etc
# mkdir ssl
# cd ssl
# keytool -genkeypair -keystore keystore.jks -storepass **nexus3** -keypass **nexus3** -alias example.com -keyalg RSA -keysize 2048 -validity 5000 -dname "CN=*.example.com, OU=Sonatype, O=Sonatype, L=Unspecified, ST=Unspecified, C=US" -ext "SAN=IP:192.168.1.2,IP:192.168.1.3"
- 修改jetty-https.xml
如采用Docker方式运行,则在docker的bash内运行
# cp /opt/sonatype/nexus/etc/jetty/jetty-https.xml /opt/sonatype/sonatype-work/nexus3/etc/
在docker的bash内编辑
/opt/sonatype/sonatype-work/nexus3/etc/jetty-https.xml
或在docker的host机器上编辑
/data/nexus-data/nexus3/etc/jetty-https.xml
<Set name="KeyStorePath"><Property name="ssl.etc"/>/keystore.jks</Set>
<Set name="KeyStorePassword">nexus3</Set>
<Set name="KeyManagerPassword">nexus3</Set>
<Set name="TrustStorePath"><Property name="ssl.etc"/>/keystore.jks</Set>
<Set name="TrustStorePassword">nexus3</Set>
- docker 运行的主机上新增或修改/etc/docker/daemon.json
{
"insecure-registries":["192.168.1.2:9082","192.168.1.3:9082"]
}
然后重启docker服务
service docker restart
- 验证
docker login your-nexus-ip:port
输入nexus的登录账号,
提示Login Succeeded表示成功
四、使用
1. 创建Docker私有仓库
通过浏览器访问Nexus
http://服务器IP:8081
点击右上角进行登录
初始用户名和密码为:admin/admin123
点击设置界面,选择Repositories,点击Create repository,如下图所示:
选择仓库类型
这里Docker有三种类型,分别是group、hosted、proxy。这里选择docker(hosted),如下图:
配置仓库
首先必须为该仓库指定一个唯一的名称,然后是HTTP的端口,最后是docker的api与该仓库进行交互,如下图:
注意这个HTTP端口号也比较关键,在上面修改docker服务时指定的参数需要用到,后面与该仓库进行交互也需要用到。
最后点击下方Create repository完成创建仓库。
2. 创建定制的容器镜像
- 首先编写一个定制容器镜像脚本。
# vim Dockerfile
FROM debian
CMD [“echo”, “hello, docker”]
- 创建镜像
# docker build -t="hello-docker"
- 运行容器测试
# docker run hello-docker
可以看到控制台打印出hello, docker了,证明我们自制的镜像成功。
3. 上传镜像到私服
登录私服仓库
注意在push上传之前必须要先登录
# docker login 192.168.1.2:9082
此时会出现以下提示:
Error response from daemon: Get https://192.168.1.2:9082/v1/users/: dial tcp 192.168.1.2:9082: getsockopt: connection refused
可能因为服务未完全启动、请等待几分钟
或者提示
Error response from daemon: Get https://192.168.1.2:9082/v1/users/: x509: certificate signed by unknown authority
此时我们需要新增或修改/etc/docker/daemon.json
{ "insecure-registries":["192.168.1.2:9082"]}
然后重启docker服务
service docker restart
- 打标记
在上传镜像之前需要先打一个tag,用于版本标记。格式
docker tag <imageId | imageName> <nexus-hostname>:<repository-port>/<image>:<tag>
# docker tag hello-docker 192.168.1.2:8082/hello-docker:latest
- 上传镜像
# docker push 192.168.1.2:8082/hello-docker:latest
5. 从私服中下载镜像
# docker pull 192.168.1.2:8082/hello-docker
- 搜索镜像
# docker search 192.168.1.2:8082/hello
6. Docker push证书的设置
# echo -n | openssl s_client -showcerts -connect 192.168.1.2:8443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> /usr/local/share/ca-certificates/nexus.crt
# update-ca-certificates
# reboot
参考文档:
更多推荐
所有评论(0)