本文主要参考“使用 Nexus 搭建 Docker 仓库”,在安装过程中遇到一些问题,本文中一并总结。在此对原作者表示感谢!

  • 环境说明:

Centos 7.4

OpenJDK 8

Nexus 3.2.0

  • 安装OpenJDK:

1 在oracle官网下载安装包:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

2 用rpm安装:

$ sudo rpm -i jdk-8u91-linux-x64.rpm

3 配置环境变量(具体jdk版本号需要进入/usr/java文件夹查看):

$ export JAVA_HOME=/usr/java/jdk1.8.0_161

4 验证是否安装成功:

$ java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
  • 安装Nexus:

1 下载、解压Nexus安装包:

$ wget --no-check-certificate https://download.sonatype.com/nexus/3/nexus-3.2.0-01-unix.tar.gz
$ tar -zxvf nexus-3.2.0-01-unix.tar.gz
$ sudo mv nexus-3.2.0-01 /usr/local

2 创建nexus用户:

$ sudo adduser -r -s /sbin/nologin -d /data/nexus-data nexus

3 创建sonatype-work 工作目录:

# 创建基本目录结构
$ sudo mkdir -p /usr/local/sonatype-work
# 创建建数据目录
$ sudo mkdir -p /data/nexus-data/{etc,log,tmp}
# 将数据目录软连接到工作目录
$ sudo ln -s /data/nexus-data /usr/local/sonatype-work/nexus3
# 更新所有目录权限
$ sudo chmod -R 755 /usr/local/{sonatype-work,nexus-3.2.0-01} /data/nexus-data
$ sudo chown -R nexus:nexus /usr/local/{sonatype-work,nexus-3.2.0-01} /data/nexus-data

4 以前台或后台方式启动Nexus:

# 以前台方式运行
$ sudo -u nexus /usr/local/nexus-3.2.0-01/bin/nexus run
# 后台运行
$ sudo -u nexus /usr/local/nexus-3.2.0-01/bin/nexus start

5 设置Nexus开机自启动:

$ sudo vim /etc/systemd/system/nexus.service

添加如下内容:

[Unit]
Description=nexus
After=network.target[Service]
Type=forking
ExecStart=/usr/local/nexus-3.2.0-01/bin/nexus start
ExecReload=/usr/local/nexus-3.2.0-01/bin/nexus force-reload
ExecStop=/usr/local/nexus-3.2.0-01/bin/nexus  stop
PrivateTmp=true[Install]
WantedBy=multi-user.target

然后设置开启自启动:

$ sudo systemctl enable nexus.service
  • 配置Nexus:

1 浏览器访问Nexus主机+port,Nexus默认使用8081端口:

如,http://192.168.13.197:8081/

Nexus启动比较慢,可以通过netstat查看服务是否启动完成:

$ sudo netstat -apn |grep 8081

如果8081端口被其他应用占用,可以修改Nexus的配置文件修改application-port为其他端口:

$ sudo vim /usr/local/nexus-3.2.0-01/etc/nexus-default.properties

然后,重新启动Nexus。

2 登录:

默认账号为admin,默认密码为admin123

3 创建仓库:

按下图1、2、3步执行:

对于docker仓库分为三类,分别是proxy、hosted、group,含义如下:

  • hosted,本地代理仓库,通常我们会部署自己的构件到这一类型的仓库,可以push和pull。
  • proxy,代理的远程仓库,它们被用来代理远程的公共仓库,如maven中央仓库,只能pull,proxy仓库可以用来加速。
  • group,仓库组,用来合并多个hosted/proxy仓库,通常我们配置maven依赖仓库组,只能pull。

3.1 本地docker仓库:

3.1.1 创建本地docker仓库(docker hosted):

选择docker(hosted)

然后为该仓库起一个名字,如test。填写访问端口,如1234。如下图,

最后创建仓库即可。

3.1.2 修改所有使用Nexus仓库的节点上docker配置:

$ sudo vim /etc/docker/daemon.json

添加如下绿框内容,其中ip只要客户端节点使用该ip能够访问Nexus服务器即可,端口为上面设置的端口号:

然后重启docker服务:

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker.service

3.1.3 验证本地docker仓库(docker hosted):

在客户端节点登录docker仓库:

$ docker login -u admin -p admin123 12.12.10.13:1234
  • 测试push功能:

以本地已有的nginx为例:

$ docker tag nginx/nginx:latest 12.12.10.13:1234/nginx/nginx:latest
$ docker push 12.12.10.13:1234/nginx/nginx:latest

此时,在Nexus上的test仓库中可以看到nginx/nginx。

  • 测试pull功能:
$ docker pull 12.12.10.13:1234/nginx/nginx:latest

可以将nginx镜像pull到本地。

3.2 代理docker仓库:

3.2.1 创建代理docker仓库(docker proxy):

选择docker(proxy)

创建过程与hosted相似,修改内容包括:

Name: test
HTTP: 8888
Enable Docker V1 API:  true 勾选下面的复选框
Remote storage:  https://registry-1.docker.io
Docker Index: Use Docker Hub
Blob store: default

其中,名字任意,连接方式选HTTP,端口号任意,其余按照上面的设置。

最后创建仓库即可。

3.2.2 修改所有使用Nexus仓库的节点上docker配置:

$ sudo vim /etc/docker/daemon.json

在上面添加的“12.12.10.13:1234”后面添加“12.12.10.13:8888”,两者用逗号分隔。然后重启docker服务:

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker.service

3.2.3 验证代理docker仓库(docker proxy):

在客户端节点登录docker仓库:

$ docker login -u admin -p admin123 12.12.10.13:8888
  • 测试pull功能:
$ docker pull 12.12.10.13:1234/tensorflow/tensorflow:latest

可以将tensorflow镜像pull到本地,并且在Nexus上有缓存,其他节点再pull该镜像的时候可以直接从Nexus服务器上拉取。

  • 参考资料:

1. https://mritd.me/2017/01/08/set-up-docker-registry-by-nexus/

2. http://www.cnblogs.com/wzy5223/p/5410990.html

3. https://blog.csdn.net/a286352250/article/details/52604846

Nexus 搭建docker本地仓库(hosted)和私有仓库(proxy)相关推荐

  1. 搭建Docker本地私有镜像仓库

    在使用Docker service create创建容器时,Docker首先默认从Docker Hub官方去下载镜像,这很不方便,很多时候我们的镜像都是使用Dockerfile自定义私有镜像,不对外公 ...

  2. 019.nexus搭建docker镜像仓库/maven仓库

    一.安装docker CE 参考docker doc https://docs.docker.com/install/linux/docker-ce/centos/ 二.docker启动nexus3 ...

  3. Docker学习(5)——创建私有仓库,为私有仓库添加web界面

    一.什么是Docker 仓库? 仓库是集中存放镜像文件的场所.有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分.实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多 ...

  4. Docker Hub的搭建、配置网络加速器、私有仓库的搭建以及私有仓库的认证与加密

    1.什么是仓库 Docker仓库是用来包含镜像的位置,Docker提供一个注册服务器(register)来保存这个仓库,每个仓库又可以包含多个具备不同tag的镜像. Docker运行中使用的默认仓库是 ...

  5. docker镜像了解(建立私有仓库,基于已有镜像创建,Docker的数据管理) 基于Dockerfile创建,基于本地模板创建,端口映射,容器互联)

    文章目录 docker镜像 制作镜像的过程 基于已有镜像创建 基于本地模板创建 基于Dockerfile创建 Dockerfile操作指令 Docker的数据管理 数据卷 docker的网络通信 容器 ...

  6. 这就是你日日夜夜想要的docker!!!---------Harbor私有仓库

    文章目录 一.Harbor私有仓库介绍 1.什么是Harbor?有什么作用? 2.harbor的特性 3.harbor配置文件参数 二.部署Harbor私有仓库 1.harbor服务器安装harbor ...

  7. Docker(三):镜像仓库 - 公共仓库、私有仓库 - commit、tag、push

    镜像分层 和 UnionFS docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是UnionFS. UnionFS是一种分层.轻量级并且高性能的文件系统.联合加载会把各层文件系统叠 ...

  8. 部署Docker仓库之企业级私有仓库Harbor

    私有仓库Harbor 一.概述 二.特点 三.Harbor仓库结构 四.部署Harbor 1.环境准备 2.安装harbor 3.修改配置文件 4.启动Harbor 5.登陆Harbor 6.新建项目 ...

  9. Docker推送镜像到私有仓库Harbor

    概述 因为项目需要将镜像推送到私有仓库,测试过程中遇到些问题,用文章记录下来. 版本信息 操作系统:银河麒麟V10SP2 Docker:20.10.17 Docker-Compose:1.22 操作步 ...

最新文章

  1. Anaconda 2019.03 发布,Python 跨平台科学计算软件
  2. 用JS的正则表达式如何判断输入框内为中文或者是英文
  3. springboot中下面哪一个作为jpa默认实现_35个超高频SpringBoot知识点(附解析),别怪我没给你机会收藏...
  4. No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK
  5. c++ qt获取电脑的内存_Qt官方示例信号量
  6. flask-稿件-环境依赖包的生成与安装-flask虚拟环境的布局
  7. 线上售楼处,卖房神器还是营销噱头?
  8. 2021-2025年中国电液伺服阀行业市场供需与战略研究报告
  9. Android 多种跑马灯的方法
  10. HP-UX 中配置Trusted System
  11. BZOJ3669[NOI2014] 魔法森林
  12. GoF设计模式——单例模式(C++实现)
  13. Adapter模式简述
  14. ASA 5520 ASDM 配置
  15. 注塑模具设计需要注意哪些要点?
  16. matlab如何读取一个图片,怎么用Matlab读入并显示图片文件
  17. 听说唯一性索引搜索快?
  18. .net设计模式 (享元模式)学习笔记
  19. python画图皮卡丘_用python画一只可爱的皮卡丘
  20. 执行python除法的符号_python 除法

热门文章

  1. 堆外缓存OHCache使用总结
  2. HTTP内容的大小写问题
  3. 微信表情图像代表什么意思_微信表情包每个表情代表什么意思
  4. Yocto系列讲解[入门篇] 1 - 快速入门熟悉Yocto的构建
  5. 电脑突然开机无反应,怎么办
  6. F005MyBatis学习笔记-MyBatis的多表关联查询
  7. 全民编程新时代—TPYBoard重磅产品TurnipBit来了!
  8. Dream_Chaser队训练赛第一场 K题
  9. 科尔沃擦窗机器人耗电_扫地机器人耗电量大吗
  10. 三菱PLC控制步进驱动器脉冲定位相关(附代码接线图)