Docker镜像仓库服务-Nexus

原创
2018/12/15 18:39
阅读数 1.2K

运维云原生集群系统,建立自己的私有Docker镜像仓库必不可少。一方面可以加快多节点部署容器镜像的下载速度,另一方面是为了安全(容器里存储有系统所有的信息、包括密码、数据库等等,切记不可上传dao共有镜像仓库)。可以创建私有镜像仓库的服务软件主要有这么几个:

  • Docker Registry,Docker自建,使用最为简单,适合个人或者3-5人小团队。
  • Harbor,基于Docker Registry开发,在之上加入了Nginx服务层,支持多租户、负载均衡、HA和WebUI,可以满足大型服务平台使用。功能强大,配置稍微复杂一些。
    • Harbor原来由VMWare中国研究中心开发,2018年已经加入CNCF云原生基金会。
  • Sonatype Nexus,就是那个以Maven库托管知名的Sonatype开发的,可以将各种开发组件库一锅端了。非常适合开发团队使用。
  • SUSE Portus,简单易用,适合中等规模的生产级集群使用。

这里,主要介绍Nexus的使用。

1、快速安装

Nexus可以提供多种软件组件服务,这里我通过容器来提供Nexus服务。运行下面的命令:

docker run -d --name nexus -p 5000:5000 -p 8081:8081 sonatype/nexus3

说明:

  • 这里的8081为nexus的管理端口。
  • 5000为容器镜像服务使用的端口,留作后面创建容器镜像仓库服务使用。下面进一步说明。
  • 上面的容器存储使用容器内的目录,当容器实例删除时将会丢失。
    • 持久存储通过-v参数来定义。

2、登陆管理界面

上面的容器启动完毕后,在浏览器输入网址:

http://localhost:8081

将会显示Nexus主界面,点击“Sign in”登录(初始账号admin/admin123)。如下:

3、创建Docker仓库

点击齿轮图标进入设置界面,如下:

使用“Create Repository”创建容器镜像仓库,选择Docker(hosted)类型,设置服务http端口为5000。然后查看属性。

这里的端口5000是启动容器时就设好的。

  • 在Nexus中每一个容器镜像服务仓库需要指定一个端口,而在容器中必须通过-p参数开放该端口,外部才可以访问。

4、授权沙盒设置

启动匿名访问。

5、启用授权沙盒

容器镜像服务需要单独启用授权沙盒,在Security-Realms页面中将Docker Bearer Token Realm加入到Active列表中。

  • 默认安装中,没有启用Docker Bearer Token Realm,会导致docker login时连接被拒。

为了方便,上面使用的是http连接协议,不建议在外网使用。

外网服务应使用https连接,需要预留端口,以及创建ssl证书并使用“SSL Certificates”添加进来。

6、Docker 设置

为了方便,上面使用的是http连接协议,还需要在Docker客户机设置才能访问(默认为https)。

执行:

sudo gedit /etc/docker/daemon.json

在文件中添加"insecure-registries": ["http://10.1.1.184:5000"],如下:

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "insecure-registries": ["http://10.1.1.184:5000"]
}

说明:

  • 这里的"exec-opts": ["native.cgroupdriver=systemd"]是为了运行Kubernetes,加起来就是上面的文件内容。
  • 10.1.1.184为我的服务器地址,5000为上面Docker启动和 Repository的服务端口,必须一致。

然后,需要重新启动Docker:

sudo systemctl restart docker

查看一下信息:docker info,看是否出现insecure-registries的信息。

7、Docker login

使用下面的方式登录到容器镜像服务。

docker login 10.1.1.184:5000

8、开始使用

使用Docker Tag对容器打新的标,指向自建的仓库。

docker tag sonatype/nexus3 10.1.1.184:5000/openthings/nexus3

使用Docker push推送容器镜像。

docker push 10.1.1.184:5000/openthings/nexus3

使用Docker pull拉取镜像。

docker pull 10.1.1.184:5000/openthings/nexus3

使用者发现Nexus会出现错误,无法连接。使用下面的命令重启Nexus的容器服务,再重新登录就好了。

docker restart nexus

最后,简单说下体会,使用Nexus的最大好处是同时支持Maven等软件仓库,维护比较简单。其它方面如性能、容错、扩容等企业级功能相对是比较弱的,企业版里提供HA,是收费的Feature。

更多参考

 

展开阅读全文
打赏
0
5 收藏
分享
加载中
更多评论
打赏
0 评论
5 收藏
0
分享
返回顶部
顶部