Easypack容器系列之:Nexus 3:Docker私库

2023-11-07 17:08

本文主要是介绍Easypack容器系列之:Nexus 3:Docker私库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

       

这里写图片描述
Nexus作为私库管理最为流行的工具之一,用于包的管理和Docker镜像管理的私库管理场景中非常常用。Easypack利用最新版本的oss版Nexus作为基础镜像用于提供类似服务。本文将同时给出具体步骤结合最新发行的Docker-CE版本实现镜像私库的管理。

Why Nexus 3

这里整理了为什么使用Nexus 3的一些理由,在做选型的时候可以做一个简单参照。

       
项目详细
为什么使用Nexus 3http://blog.csdn.net/liumiaocn/article/details/62050525

docker版本

本次使用的docker的版本为17.03.0-ce,但是应该并不限于此版本,其他版本未作验证。

[root@liumiaocn ~]# docker versionClient: Version:      17.03.0-ce API version1.26 Go version:   go1.7.5 Git commit:   3a232c8 Built:        Tue Feb 28 08:10:07 2017 OS/Arch:      linux/amd64Server: Version:      17.03.0-ce API version1.26 (minimum version 1.12) Go version:   go1.7.5 Git commit:   3a232c8 Built:        Tue Feb 28 08:10:07 2017 OS/Arch:      linux/amd64 Experimental: false[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

下载镜像

[root@liumiaocn ~]# docker pull liumiaocn/nexusUsing default tag: latestlatest: Pulling from liumiaocn/nexusDigest: sha256:b93f9a6bba2b35ada33c324cd06bd2c732fc1bed352df186af1a013e228af8d8Status: Image is up to date for liumiaocn/nexus:latest[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

启动Nexus

                   
项目详细
Nexus UI8081
private repo8082
proxy repo8083
URLhttp://192.168.32.123:8081/
[root@liumiaocn ~]# docker run -d -p 8081:8081 -p 8082:8082 -p 8083:8083 --name nexus liumiaocn/nexus222abae47fcf9d32c821bff6426edd03f6757a3dd4cbe07517dada5d800e173f[root@liumiaocn ~]#
  • 1
  • 2
  • 3

logon

               
项目详细
URLhttp://192.168.32.123:8081/
用户名称admin
用户密码admin123

这里写图片描述

登陆之后
这里写图片描述

仓库类型

具体仓库类型主要分为hosted/proxy/group三种。具体含义如下:

               
项目详细说明
hosted本地存储,像官方仓库一样提供本地私库功能
proxy提供代理其他仓库的类型
group组类型,可以组合多个仓库为一个地址提供服务

创建priavete仓库

创建一个Hosted的仓库作为private仓库,具体设定信息如下:

                       
项目详细说明
类型docker (hosted)
Namedocker-repo-private
HTTP Port8082
Blob storedocker-repo-private
Deployment policyAllow redeploy

这里写图片描述

创建proxy仓库

创建一个proxy仓库,具体设定信息如下:

                       
项目详细说明
类型docker (proxy)
Namedocker-repo-proxy
Location of the remote repository being proxiedhttps://registry-1.docker.io
Docker IndexUse Docker Hub
Blob storedocker-repo-proxy

这里写图片描述

创建group仓库

创建一个group仓库,具体设定信息如下:

                           
项目详细说明
类型docker (group)
Namedocker-repo-group
HTTP Port8083
Blob storedocker-repo-group
Member repositoriesdocker-repo-private
Member repositoriesdocker-repo-proxy

这里写图片描述

docker设定

Docker的私库可以使用HTTP或者HTTPS,Nexus 3都予以支持,本文的方式采用HTTP方式,因此需要设定docker,在docker启动前设定如下信息是需要的

           
项目详细说明
设定对象文件/etc/docker/daemon.json
设定内容insecure-registries

设定详细内容,如下所示:

[root@liumiaocn ~]# cat /etc/docker/daemon.json"insecure-registries": [    "192.168.32.123:8082",    "192.168.32.123:8083"  ],  "disable-legacy-registry": true}[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

重启docker

[root@liumiaocn docker]# systemctl restart docker[root@liumiaocn docker]#
  • 1
  • 2

启动nexus

随着docker的重启,nexus的容器也需要启动,详细如下所示:

[root@liumiaocn docker]# docker start nexusnexus[root@liumiaocn docker]#
  • 1
  • 2
  • 3

确认

至此,Nexus的设定准备基本就绪,可以确认结果了。

docker login

为了进行操作,需要事先进行docker login的操作

           
项目详细说明
private仓库docker login -u admin -p admin123 192.168.32.123:8082
proxy仓库docker login -u admin -p admin123 192.168.32.123:8083

执行确认

[root@liumiaocn ~]# docker login -u admin -p admin123 192.168.32.123:8082Login Succeeded[root@liumiaocn ~]# docker login -u admin -p admin123 192.168.32.123:8083Login Succeeded[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5

proxy仓库确认

从remote仓库pull下来镜像,然后确认是否在proxy仓库中存在

[root@liumiaocn ~]# docker pull 192.168.32.123:8083/alpine:3.53.5: Pulling from alpine627beaf3eaaf: Downloadingunknown blob[root@liumiaocn docker]#
  • 1
  • 2
  • 3
  • 4
  • 5

查了一下nexus的一些issue,发现有不少都是跟blob相关,看起来相关的小的问题还有一些在不断的收拾中,但是不影响结果。
确认proxy仓库,发现pull的alpine的3.5版本已然在proxy仓库中保存完毕,所以上面的unknown blob也确实没有影响结果。
这里写图片描述

private仓库确认

事前镜像确认

[root@liumiaocn ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEbusybox             latest              00f017a8c2a6        2 days ago          1.11 MBliumiaocn/maven     latest              833b66f10ce6        5 days ago          160 MBliumiaocn/nexus     latest              932d715eb7e1        5 days ago          460 MBliumiaocn/gitlab    latest              2462fb291203        5 days ago          1.21 GBliumiaocn/jenkins   latest              6668ecd39e4f        5 days ago          293 MB[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

tag busybox镜像

[root@liumiaocn ~]# docker tag busybox 192.168.32.123:8082/busybox:latest[root@liumiaocn ~]# docker imagesREPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE192.168.32.123:8082/busybox   latest              00f017a8c2a6        2 days ago          1.11 MBbusybox                       latest              00f017a8c2a6        2 days ago          1.11 MBliumiaocn/maven               latest              833b66f10ce6        5 days ago          160 MBliumiaocn/nexus               latest              932d715eb7e1        5 days ago          460 MBliumiaocn/gitlab              latest              2462fb291203        5 days ago          1.21 GBliumiaocn/jenkins             latest              6668ecd39e4f        5 days ago          293 MB[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

docker push

[root@liumiaocn ~]# docker push 192.168.32.123:8082/busybox:latestThe push refers to a repository [192.168.32.123:8082/busybox]c0de73ac9968: Pushedlatest: digest: sha256:68effe31a4ae8312e47f54bec52d1fc925908009ce7e6f734e1b54a4169081c5 size: 527[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5

结果确认:busybox镜像已经被正常地push到了private仓库中
这里写图片描述

docker pull

为了确认docker pull的动作,事前先将之前的busybox先行删除,以确认确实下载了新的busybox镜像到本地。

[root@liumiaocn ~]# docker rmi busyboxUntagged: busybox:latestUntagged: busybox@sha256:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f[root@liumiaocn ~]# docker rmi 192.168.32.123:8082/busyboxUntagged: 192.168.32.123:8082/busybox:latestUntagged: 192.168.32.123:8082/busybox@sha256:68effe31a4ae8312e47f54bec52d1fc925908009ce7e6f734e1b54a4169081c5Deleted: sha256:00f017a8c2a6e1fe2ffd05c281f27d069d2a99323a8cd514dd35f228ba26d2ffDeleted: sha256:c0de73ac99683640bc8f8de5cda9e0e2fc97fe53d78c9fd60ea69b31303efbc9[root@liumiaocn ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEliumiaocn/maven     latest              833b66f10ce6        5 days ago          160 MBliumiaocn/nexus     latest              932d715eb7e1        5 days ago          460 MBliumiaocn/gitlab    latest              2462fb291203        5 days ago          1.21 GBliumiaocn/jenkins   latest              6668ecd39e4f        5 days ago          293 MB[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

docker pull操作:可以看到确实是从private仓库下载下来了镜像,而且速度也明显快了非常之多。

[root@liumiaocn ~]# docker pull 192.168.32.123:8082/busyboxUsing default tag: latestlatest: Pulling from busybox04176c8b224a: Pull completeDigest: sha256:68effe31a4ae8312e47f54bec52d1fc925908009ce7e6f734e1b54a4169081c5Status: Downloaded newer image for 192.168.32.123:8082/busybox:latest[root@liumiaocn ~]# docker imagesREPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE192.168.32.123:8082/busybox   latest              00f017a8c2a6        2 days ago          1.11 MBliumiaocn/maven               latest              833b66f10ce6        5 days ago          160 MBliumiaocn/nexus               latest              932d715eb7e1        5 days ago          460 MBliumiaocn/gitlab              latest              2462fb291203        5 days ago          1.21 GBliumiaocn/jenkins             latest              6668ecd39e4f        5 days ago          293 MB[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

总结

至此,如何使用Nexus管理Docker镜像已然十分清楚,但是如何很好的管理镜像,备份机制/版本控制/差分管理/定期cache/及时清理等方面还有很多问题需要考虑,需要在实际的工作中不断实践总结。

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述

这篇关于Easypack容器系列之:Nexus 3:Docker私库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/365055

相关文章

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF