社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

Surging_Dandelion • 5 年前 • 235 次点击  
阅读 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
 
235 次点击