nexus搭建本地docker仓库

亡羊补牛
亡羊补牛 2019-04-25 10:02
阅读需:0

harbor 1.7.5 的docker容器多达10个,虽然好用,但太占用资源了,nexus3版本就已经支持docker仓库了,而且设置简单,我们就化繁为简,用nexus来搭建我们的docker私服仓库,本文不介绍太多理论知识,只是快速搭建docker私服并提供https访问,更多技术细节可以参考官方文档,网络也有很多详细介绍的文章。

以下以nexus主机IP地址 192.168.1.68 为例,

docker-compose部署方便快捷,挂载本地文件可以选择本地文件夹,也可以创建volume,我习惯创建volume,这样docker部署方便,也方便以后扩展swarm模式或者k8s集群部署,先创建卷:

docker volume create nexus_data

脚本映射了2个端口,8081 提供nexus对外web访问,8082留给docker仓库访问,volumes添加 external: true,这样在删除容器的时候不会删除volume里的本地保存数据,docker-compose脚本如下:


docker volume create nexus_data


直接执行:

docker volume create nexus_data


稍等一会儿,提示 创建容器成功,我们就可以通过IP地址 + 端口号访问 nexus了,默认用户名:admin ,密码:admin123,登录nexus之后,点击 Server Administratoin and Configuration, 点击 Repositories 进入仓库列表页面:



点击 Create Repository 创建仓库:


选择 docker(hosted) 创建本地托管仓库,


必输项有2个地方,Name 仓库名称自定义填写,HTTP Port,因为之前映射了主机的8082,这里我们选中 HTTP项下的复选框,后面文本填写 8082:



然后点击最下面的按钮 Create Repository 创建仓库:




到这里,我们的docker私服就创建完成了,测试一下,因为是http协议访问,要在docker客户端主机上添加注册主机信任,编辑 /etc/docker/daemon.json,没有这个文件就创建一个,如果已经有内容,就按照如下格式添加:

docker volume create nexus_data

信任主机地址是一个数组,别忘记结尾的","

docker volume create nexus_data


保存,重启docker服务:

docker volume create nexus_data

客户端登录docker私服,输入用户名和密码,没修改的话就是 admin,admin123:

docker volume create nexus_data

试一下push和pull是否成功,先随便pull个镜像回来,就nginx吧,然后修改tag,push到我们搭建的docker私服,再pull下来看是否正常:


docker volume create nexus_data


再看看私服上的样子,我们修改tag的nginx镜像成功的上传到了私服:



到此http模式的访问就完成了,可以正常使用了,但现在https是一个趋势,并且非https形式的docker login还需要在客户端的  daemon.json 中添加注册主机信任,这样比较麻烦,我们还是来个方便快捷的nginx反向代理实现https访问 docker私服吧。

实现https访问当然需要ca证书,获取ca证书目前有如下几个途径:


  1. 从ca根证书颁发机构购买,商业应用的话建议直接购买,证书可以有更强大的功能;

  2. 自签证书,证书有效期、域名等都可以随意设置,但部署起来麻烦,所有访问的客户端都需要添加信任,不推荐;

  3. 单域名免费ca证书,可以从阿里云、腾讯云等服务商处免费申请,有效期一年;

  4. letsencrypt 签发的免费ca,可以支持多域名、泛域名,有效期自证书签发之日起90天,可以使用acme.sh脚本自动申请,并自动续期,acme.sh使用文档地址:acme.sh 官方中文说明文档


具体申请证书网上太多文章,自己搜索吧,以下假设申请完毕ca证书,直接贴上nginx 反向代理脚本:

docker volume create nexus_data


然后重新载入nginx 配置:

docker volume create nexus_data


现在我们就可以通过我们的域名用https访问 docker私服和 nexus服务了,daemon.json也不用添加注册主机信任,docker镜像也不用添加个端口号的尾巴了,再测试下https拉取镜像,就变成了以下这样子:

docker volume create nexus_data

一切都安静了。。

评论
  • admin
    2019-04-25 10:09
    666
    6 回复
  • 单调路过
    2019-04-25 16:17
    前面再来一个docker搭建安装 就配套了 小白都可以上手了 不用再另外找了
    5 回复