部署 Nexus
Nexus 是一个强大的 Maven 仓库管理器,极大地简化了内部仓库的维护和外部仓库的访问。2016 年 4 月 6 日 Nexus 3.0 版本发布,相较 2.x 版本有了很大的改变
- 对低层代码进行了大规模重构,提升性能,增加可扩展性以及改善用户体验。
- 升级界面,极大的简化了用户界面的操作和管理。
- 提供新的安装包,让部署更加简单。
- 增加对 Docker, NeGet, npm, Bower 的支持。
- 提供新的管理接口,以及增强对自动任务的管理。
我们使用 Docker 来安装和运行 Nexus,docker-compose.yml
配置如下:
version: '3.1'
services:
nexus:
restart: always
image: sonatype/nexus3
container_name: nexus
ports:
- 80:8081
volumes:
- data:/nexus-data
volumes:
data:
验证安装是否成功
- 地址: http://ip:port/
- 用户名: admin
- 密码: admin123
注意: 新版本密码在 cat /var/lib/docker/volumes/nexus_data/_data/admin.password
安装 Harbor
官方 GitHub 上下载最新离线安装版
https://github.com/goharbor/harbor
解压安装包
tar -zxvf harbor-offline-installer-v1.8.0.tgz
# 输出如下
harbor/harbor.v1.8.0.tar.gz
harbor/prepare
harbor/LICENSE
harbor/install.sh
harbor/harbor.yml
修改配置文件
vi harbor.yml
# 修改为域名或你服务器 IP
hostname: 192.168.141.150
执行安装脚本
./install.sh
# 输出如下
[Step 0]: checking installation environment ...
Note: docker version: 18.09.6
Note: docker-compose version: 1.24.0
验证安装是否成功
通过浏览器访问 http://192.168.141.150,看到登录页面
输入账号 admin
,密码 Harbor12345
,登录成功后
Harbor 启动和停止
Harbor 的日常运维管理是通过 docker-compose 来完成的,Harbor 本身有多个服务进程,都放在 docker 容器之中运行,我们可以通过 docker ps
命令查看。
docker ps | grep goharbor
# 启动
docker-compose start
# 停止
docker-comose stop
# 重启
docker-compose restart
说明:
- nginx: nginx 负责流量转发和安全验证,对外提供的流量都是从 nginx 中转,所以开放 https 的 443 端口,它将流量分发到后端的 ui 和正在 docker 镜像存储的 docker registry。
- harbor-jobservice: harbor-jobservice 是 harbor 的 job 管理模块,job 在 harbor 里面主要是为了镜像仓库之前同步使用的;
- harbor-ui: harbor-ui 是 web 管理页面,主要是前端的页面和后端 CURD 的接口;
- registry: registry 就是 docker 原生的仓库,负责保存镜像。
- harbor-adminserver: harbor-adminserver 是 harbor 系统管理接口,可以修改系统配置以及获取系统信息。
- harbor-db: harbor-db 是 harbor 的数据库,这里保存了系统的 job 以及项目、人员权限管理。由于本 harbor 的认证也是通过数据,在生产环节大多对接到企业的 ldap 中;
- harbor-log: harbor-log 是 harbor 的日志服务,统一管理 harbor 的日志。通过 inspect 可以看出容器统一将日志输出的 syslog。
这几个容器通过 Docker link 的形式连接在一起,这样,在容器之间可以通过容器名字互相访问。对终端用户而言,只需要暴露 proxy (即 Nginx)的服务端口。
配置客户端
在 /etc/docker/daemon.json
中增加如下内容(如果文件不存在请新建该文件)
{
"registry-mirrors": [
"https://registry.docker-cn.com"
],
"insecure-registries": [
"192.168.141.150"
]
}
注意: 该文件必须符合 JSON 规范,否则 Docker 将不能启动。
重启服务
systemctl daemon-reload
systemctl restart docker
检查客户端配置是否生效
使用 docker info
命令手动检查,如果从配置中看到如下内容,说明配置成功
Insecure Registries:
192.168.141.150
127.0.0.0/8
Harbor 上传镜像
新建项目
我们以推送 Nginx 为例,首先需要在 Harbor 上创建一个 公开/私有 的项目
推送镜像
# 在项目中标记镜像
docker tag nginx 192.168.141.150/myshop/nginx:latest
# 登录 Harbor
docker login 192.168.141.150 -u admin -p Harbor12345
# 推送镜像到项目
docker push 192.168.141.150/myshop/nginx:latest
查看镜像
Harbor 下载镜像
在其它机器下载镜像只需要配置好客户端即可
docker pull 192.168.141.150/myshop/nginx:latest