docker私服搭建有官方的registry镜像,也有改版后的NexusOss3.x,因为maven的原因搭建了nexus,所以一并将docker私服也搭建到nexus上。

nexus的安装过程就单独说了,如果是2.x系列需要升级到2.14版本再升级到3.y系列,如果3.x到3.y直接升级就可以。

从3.0版本开始,nexus不再只是一个maven仓库,还可以是docker、npm、bower的私有仓库。

配置SSL

docker的仓库链接是基于HTTPS的,故一般情况下需要将nexus的访问方式改为支持https。

配置SSL主要的难点在于证书,证书可以用公网证书,而一般情况下,私服部署在内网,没有域名,用内网IP访问,这种情况下用自签名的证书是最好的选择。证书生成工具用jdk自带的就可以。

配置过程,进入${nexus}/etc/ssl目录下面,执行命令过程中会输入多次密码,记下密码,后面有用处:

$ keytool -genkeypair -keystore example.jks -storepass password -alias example.com \
> -keyalg RSA -keysize 2048 -validity 5000 -keypass password \
> -dname 'CN=*.example.com, OU=Sonatype, O=Sonatype, L=Unspecified, ST=Unspecified, C=US' \
> -ext 'SAN=DNS:nexus.example.com,DNS:clm.example.com,DNS:repo.example.com,DNS:www.example.com' Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore example.jks -destkeystore example.jks -deststoretype pkcs12".
$ keytool -exportcert -keystore example.jks -alias example.com -rfc > example.cert
Enter keystore password: password Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore example.jks -destkeystore example.jks -deststoretype pkcs12".
$ keytool -importkeystore -srckeystore example.jks -destkeystore example.p12 -deststoretype PKCS12
Importing keystore example.jks to example.p12...
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
Entry for alias example.com successfully imported.
Import command completed: 1 entries successfully imported, 0 entries failed or cancelled
$ openssl pkcs12 -nocerts -nodes -in example.p12 -out example.key
Enter Import Password:
MAC verified OK

修改配置文件:etc/nexus.properties

原:
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
修改后:
application-port-ssl=8433
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-https.xml,${jetty.etc}/jetty-requestlog.xml

修改配置文件:etc/jetty/jetty-https.xml

 <New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
<Set name="KeyStorePath"><Property name="ssl.etc"/>/keystore.jks</Set> // 文件名和前面证书的一致
<Set name="KeyStorePassword">password</Set> // 密码用前面的
<Set name="KeyManagerPassword">password</Set>
<Set name="TrustStorePath"><Property name="ssl.etc"/>/keystore.jks</Set>
<Set name="TrustStorePassword">password</Set>
<Set name="EndpointIdentificationAlgorithm"></Set>
<Set name="NeedClientAuth"><Property name="jetty.ssl.needClientAuth" default="false"/></Set>
<Set name="WantClientAuth"><Property name="jetty.ssl.wantClientAuth" default="false"/></Set>
<Set name="ExcludeCipherSuites">
<Array type="String">
<Item>SSL_RSA_WITH_DES_CBC_SHA</Item>
<Item>SSL_DHE_RSA_WITH_DES_CBC_SHA</Item>
<Item>SSL_DHE_DSS_WITH_DES_CBC_SHA</Item>
<Item>SSL_RSA_EXPORT_WITH_RC4_40_MD5</Item>
<Item>SSL_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
<Item>SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
<Item>SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA</Item>
</Array>
</Set>
</New>

重启nexus,打开浏览器访问,https://ip:8443/ 会提示出来证书签名有问题,直接略过就行。

创建仓库(私有,代理,组合)

创建三个仓库,如果需要代理多个来源,可以创建多个代理库。

私有仓库:注意将http或者https的端口打开。

代理中央库的注意地址:

remote: https://registry-1.docker.io

docer index : use Docker hub

组合仓库将刚建立的Hosted和Proxy仓库都加入就可以了。

配置docker本地

本地配置最主要的是配置insecure-registries和docker login。

配置daemon.json

/etc/docker/daemon.json

{
"registry-mirrors": ["https://IP:18443"],
"insecure-registries":["IP:18443","IP:18444"]
}

为什么需要两个insecure-registry呢?因为group仓库不可以作为push仓库,如果单纯的进行pull,可以只配置一个。

docker login

分别login两个insecure-registry。

$ docker login IP:18444
Username (admin): admin
Password:
Login Succeeded
$ docker login IP:18443
Username (admin): admin
Password:
Login Succeeded

这样可以愉快的进行push和pull操作了。

push和pull的坑

nexus有一个设定,push只能对Hosted,pull从三种仓库都可以。因为push的操作给proxy的,是无法推送给被代理库的。group的仓库接受push后,无法确定是给proxy还是hosted。

但是nexus可以通过push给hosted的仓库,但是通过group仓库pull。

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest 3fd9065eaf02 5 months ago 4.15MB
IP:18443/alpine latest 3fd9065eaf02 5 months ago 4.15MB
$ docker tag alpine IP:18444/alpine
$ docker push IP:18444/alpine
The push refers to repository [IP:18444/alpine]
cd7100a72410: Layer already exists
latest: digest: sha256:8c03bb07a531c53ad7d0f6e7041b64d81f99c6e493cb39abba56d956b40eacbc size: 528
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest 3fd9065eaf02 5 months ago 4.15MB
IP:18444/alpine latest 3fd9065eaf02 5 months ago 4.15MB
$ docker pull IP:18443/alpine
Using default tag: latest
latest: Pulling from alpine
Digest: sha256:8c03bb07a531c53ad7d0f6e7041b64d81f99c6e493cb39abba56d956b40eacbc
Status: Image is up to date for IP:18443/alpine:latest
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest 3fd9065eaf02 5 months ago 4.15MB
IP:18443/alpine latest 3fd9065eaf02 5 months ago 4.15MB
IP:18444/alpine latest 3fd9065eaf02 5 months ago 4.15MB

完成。

docker私服搭建nexus3的更多相关文章

  1. Docker私服搭建--Harbor

    Docker私服搭建--Harbor Harbor概述 Harbor的安全机制 Harbor的镜像同步 Harbor的镜像同步机制 Harbor的多级部署 一.安装 1.1 docker安装 1.2 ...

  2. docker 快速搭建Nexus3

    1.拉取镜像 docker pull sonatype/nexus3 2.启动容器 : -p : -p : -v /mnt/gv0/nexus-data:/nexus-data sonatype/ne ...

  3. Docker Compose部署Nexus3时的docker-compose,yml代码

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  4. Docker 私服

    目录 什么是 Docker 私服? Docker 私服搭建 上传镜像至私服 从私服拉取镜像 什么是 Docker 私服? Docker 官方的 Docker Hub 是一个用于管理公共镜像的仓库,我们 ...

  5. Docker 搭建 Nexus3 私服 | 基本操作

    1 Docker 安装 Nexus3 1.1 创建目录 在硬盘上创建 Nexus3 的主目录: mkdir -p /Users/yygnb/dockerMe/nexus3 为该目录添加权限: chmo ...

  6. 搭建Nexus3私服(含使用说明,支持CentOS、Windows)

    官方文档 Nexus仓库介绍(支持maven.yum.docker私服等) 仓库分为三种: proxy:是远程仓库的代理.比如说在nexus中配置了一个central repository的proxy ...

  7. 使用nexus搭建一个docker私服

    使用nexus搭建docker私服 一.需求: 二.实现步骤 1.编写`docker-compose`文件,实现`nexus`的部署 2.修改/usr/lib/systemd/system/docke ...

  8. 【Maven】---Linux搭建Nexus3.X私服

    Linux搭建Nexus3.X私服 备注:linux版本: ubuntu 同时已经部署好JDK8环境 一.linux安装nexus 1.创建文件夹并进入该目录 cd /usr/local && ...

  9. 使用registry搭建docker私服仓库

    使用registry搭建docker私服仓库 一.拉取 registry镜像 二.根据镜像启动一个容器 1.创建一个数据卷 2.启动容器 三.随机访问一个私服的接口,看是否可以返回数据 四.推送一个镜 ...

随机推荐

  1. MySQL 导出远程服务器数据库 为 sql文件

    MySQL 导出远程服务器sql文件 mysqldump -h192.168.1.111 –P3306 -uroot -ppassword --default-character-set=utf8 t ...

  2. loli的测试——搜索

    今天是2018.5.24,loli给我们说要考搜索,本来以为是给初学者们考的就没准备,然而老师说我们也要考.(2018.6.29补:这次的简单测试与之后变得非常难的几次搜索测试形成了鲜明的对比,从而更 ...

  3. 【洛谷】【堆+贪心】P1484 种树

    [题目描述:] cyrcyr今天在种树,他在一条直线上挖了n个坑.这n个坑都可以种树,但为了保证每一棵树都有充足的养料,cyrcyr不会在相邻的两个坑中种树.而且由于cyrcyr的树种不够,他至多会种 ...

  4. python基础整理4——面向对象装饰器惰性器及高级模块

    面向对象编程 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程 面向对象编程(Object Oriented Pro ...

  5. 访问 IIS 元数据库失败解决问题的方法

    近日调试一Asp.net程序,出现了“访问 IIS 元数据库失败”的错误信息,最后经过搜索发现了解决问题的方法. 解决方法如下: 1.依次点击“开始”-“运行”. 2.在“运行”栏内输入 “C:\WI ...

  6. win10下安装Jenkins

    Jenkins是一个基于java的持续集成工具,开源项目.用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.随着近几年docker技术的成熟和应用,很多公司开始大量尝试 ...

  7. springMVC框架 对BaseCtrl封装,简化开发

    让你的项目有对象,你的项目如何才会有面向对象特征呢?没有面向对象特征的项目不是好项目哦.此篇博文会使用到面向对象特征中的封装继承,还有就是枚举类型.这篇博文教你如何让你的项目体现面向对象特征. 最近公 ...

  8. DML-插入

    插入的方式一: 语法: insert into 表名(字段)values(值); 特点: 1.要求表明括号里的属性和values括号里的属性一致或兼容 2.字段的个数和顺序不一定与原始表中的字段个数和 ...

  9. Linux中kafka部署和集群

    1.下载kafka安装包kafka_2.12-1.1.0. tar -xzvf kafka_2.11-0.8.2.1.tgz #解压 mv kafka_2.11-0.8.2.1 /usr/local/ ...

  10. 提高PHP开发效率, PhpStorm必装的几款插件

    1. Translation 最好用的翻译插件 对于我等英文不好的同学来说,简直是福音. 打开翻译对话框 : Ctrl + Shift + O(英文字母o) 鼠标取词并翻译 : Ctrl + Shif ...