Py学习  »  docker

Docker随手记3 - 基于Docker搭建Ubuntu下私服Nexus3

Surging_Dandelion • 3 年前 • 229 次点击  
阅读 29

Docker随手记3 - 基于Docker搭建Ubuntu下私服Nexus3

 一、概述

Nexus3可以支持Maven、Docker、NuGet、npm、Bower等,作为一个稳定的私服产品常常用于我们开发管理过程中。

用Nexus搭建本地私服有如下好处:

  1. 加速构建、稳定
  2. 节省带宽
  3. 统一控制,方便监管
  4. 可以部署自定义构件

这些优点使得Nexus日益成为主流的仓库管理器之一

闲话少叙,上图


二、Nexus镜像安装

Nexus2 还是 Nexus3

Nexus3.x 相较 2.x 版本有很大的改变

  1. 从底层重构,从而提高性能,增强扩展能力,并改善用户体验
  2. 升级界面,增加更多的浏览,搜索和管理功能
  3. 增加 Docker,NuGet,npm,Bower的支持
  4. 提供新的管理接口,从而能自动管理任务

nexus3安装

1.下载Nexus3的镜像

访问hub.docker.com/,搜索nexus如下图


选择第一个,官方原装进口版本,执行如下命令,我这里已经下载好了

root@surging:~# docker pull sonatype/nexus3
Using default tag: latest
latest: Pulling from sonatype/nexus3
Digest: sha256:3262783b5f44c6265cf867b390e84a643b855873b2018c0d28037d7cd29a89cf
Status: Image is up to date for sonatype/nexus3:latest
docker.io/sonatype/nexus3:latest
复制代码

2.使用镜像启动一个容器

$ docker run -d -p 8081:8081 -p 8082:8082 -p 8083:8083 --name nexus3 -v /home/nexus/nexus-data:/nexus-data --restart=always sonatype/nexus3复制代码

  • 8082端口是用于host镜像仓库的服务端口
  • 8083端口用户group镜像仓库的服务端口
  • 8081 端口是nexus的服务端口
  • --name nexus3
  • -v /home/nexus/nexus-data:/nexus-data 将容器内nexus-data数据文件夹挂载到宿主机/home/nexus/nexus-data目录下
  • sonatype/nexus3 镜像名,如果后面不加版本号,则默认启动latest版本

注意 --restart=always:
加上这个指令不管退出状态码是什么始终重启容器。当指定always时,docker daemon将无限次数地重启容器。容器也会在daemon启动时尝试重启,不管容器当时的状态如何。

  • no :容器退出时不要自动重启。这个是默认值。
  • on-failure[:max-retries] : 只在容器以非0状态码退出时重启。可选的,可以退出docker daemon尝试重启容器的次数。
  • always :不管退出状态码是什么始终重启容器。当指定always时,docker daemon将无限次数地重启容器。容器也会在daemon启动时尝试重启,不管容器当时的状态如何。
  • unless-stopped :不管退出状态码是什么始终重启容器,不过当daemon启动时,如果容器之前已经为停止状态,不要尝试启动它。

启动之后我们就可以通过http://服务器IP:8081访问,相关界面如下图



nexus3默认的账号依旧是admin但是密码已经变了具体的密码存储在nexus3的容器的nexus-data路径内的admin.password文件内
具体操作:

a. 查看nexus3容器id,执行 docker ps

控制台显示

docker ps
CONTAINER ID        IMAGE                                       COMMAND                  CREATED             STATUS              PORTS                                                                                        NAMES
2bc9db68ba83        elasticsearch:5.6.16                        "/docker-entrypoint.…"   2 weeks ago         Up 2 weeks          0.0.0.0:19200->9200/tcp, 0.0.0.0:19300->9300/tcp                                             es5
01b398d530aa        sonatype/nexus3                             "sh -c ${SONATYPE_DI…"   2 weeks ago         Up 2 weeks          0.0.0.0:8081-8083->8081-8083/tcp                                                             nexus3
e3a1b31ed4f4        registry:2                                  "/entrypoint.sh /etc…"   5 months ago        Up 2 weeks          0.0.0.0:5000->5000/tcp                                                                       registryb复制代码

b. 进入容器控制台执行  docker exec -it 01b398d530aa bash

控制台显示

docker exec -it 01b398d530aa bash
bash-4.4$ ls
bin  boot  dev	etc  help.1  home  lib	lib64  licenses  lost+found  media  mnt  nexus-data  opt  proc	root  run  sbin  srv  sys  tmp	uid_entrypoint.sh  uid_template.sh  usr  var
bash-4.4$ cd nexus-data/
bash-4.4$ ls
admin.password  db             generated-bundles  karaf.pid  log     restore-from-backup
blobs           elasticsearch  instances          keystores  orient  tmp
cache           etc            javaprefs          lock       portad复制代码

admin.password中的第一行就是密码,复制密码使用admin登录,登录成功之后系统会自动提示你更换admin密码

三、Nexus创建Docker私有仓库

通过浏览器访问Nexus

http://服务器IP:8081

登录nexus

点击右上角进行登录,密码就是你刚才设置的密码:


登录

Create repository

点击设置界面,选择Repositories,点击Create repository,如下图所示:


选择仓库类型

这里Docker有三种类型,分别是group、hosted、proxy。选择docker(hosted),如下图:


三种仓库类型

注:Docker镜像仓库类型含义解释如下:

  • hosted : 本地存储,即同docker官方仓库一样提供本地私服功能
  • proxy : 提供代理其他仓库的类型,如docker中央仓库
  • group : 组类型,实质作用是组合多个仓库为一个地址
创建host仓库

指定docker仓库的名称、指定一个端口用来通过http的方式进行访问仓库、勾选是否支持docker API V1,然后create repository;



host仓库创建成功
验证仓库

我本地已经登录过仓库了,直接显示成功,帐号密码可以使用admin,也可以在nexus中自行配置,这里就不赘述了

docker login 10.10.1.10:8082
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded复制代码


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/70786
 
229 次点击