version: '3.2'
services:
  nexus3:
    container_name: nexus3
    hostname: nexus3
    image: sonatype/nexus3:3.14.0
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: 512M
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /data/docker/nexus3/data:/nexus-data
    ports:
      - 8081:8081
      - 8082:8082
      - 8083:8083
    restart: always
    networks:
      - nexus

networks:
   nexus:
     driver: bridge

以上为nexus3的docker-compose.ymal

docker私有仓库

通过变量设置了时区,将数据盘映射到了本地,开放了8081,8082,8083三个端口,创建了名为nexus的桥接网络

为什么开放三个端口?

8081--web页面访问端口,也是maven依赖下载的端口

8082--docker私库的上传端口

8083--docker私有仓库的group端口

上图可以看到docker的私有仓库和maven的依赖仓库

创建专用的blob

为了仓库数据的独立性和安全性,我们可以给每一个repository创建一个独立的Blob块存储。

点击 Repository下面的 Blob Stores - Create blob store:

Name:填写一个易于辨认的名字

Path:会自动生成并补全。默认在Nexus安装目录下面的sonatype-work/nexus3/blobs/下,也可以修改到其它目录或磁盘,甚至可以是NFS或者cephfs的目录。
image

创建hosted类型的私有仓库

点击 Repository下面的 Repositories - Create repository - docker(hosted) :

配置后如图

这里http端口为8082,当我们需要上传镜像时就可以使用该端口

创建一个proxy类型的docker仓库

proxy类型仓库,可以帮助我们访问不能直接到达的网络,如另一个私有仓库,或者国外的公共仓库

配置如图

这里没有开放端口,因为proxy会集成到group中,当私有仓库中没有需要的镜像,就会去代理仓库下载,下载后会保存到私有仓库中

创建一个group类型的docker仓库

group类型的docker仓库,是一个聚合类型的仓库。它可以将前面我们创建的3个仓库聚合成一个URL对外提供服务,可以屏蔽后端的差异性,实现类似透明代理的功能。

配置如图

Group类型创建过程类似于上面的proxy类型。

group : 将左边可选的3个仓库,添加到右边的members下

启用了8083的监听端口

如何使用私有仓库

这是一个docker部署jar包的脚本

#!/bin/bash

# set -e
export BUILD_ID=dontkillme

\cp -f $WORKSPACE/target/xxxx.jar /data/docker/xxxx/jar && \

# 容器名称
CONTAINER="findhousewx"

# 服务名称
SERVICE_NAME="findhousewx_fbl-findhousewx-service"

# docker私有仓库的地址
REG_URL="xx.xx.xx.xx:8082/"

# 私有仓库账户密码
USER="admin"
PASSWD="xxxx"

# 登陆私有仓库
docker login -u $USER -p $PASSWD $REG_URL && \

# 镜像名称(以日期时间为镜像标签,防止重复)
IMAGE=$REG_URL$CONTAINER":"$(date -d "today" +"%Y%m%d_%H%M%S")

# dockerfile目录
cd /data/docker/findhousewx && \

# 创建新镜像
docker build -t $IMAGE . && \

# 上传镜像到私有仓库
docker push $IMAGE && \

echo "上传镜像完成" && \

# 定义删除未使用镜像和容器的函数
deletenotused(){
    # 删除未使用的pod
    docker container prune -f --filter "label=pod_category=fwx" --filter "until=48h"
    # 删除未使用的image(使用标签label来定位改服务的pod,防止删除其他服务的pod)
    docker image prune -a -f --filter "label=image_category=fwx" --filter "until=48h"
}

docker service ls | grep -i $CONTAINER
# 如果服务正在运行则滚动更新,如果没有就创建
if [ $? -eq 0 ];then
    # 滚动升级
    docker service update --image $IMAGE $SERVICE_NAME && \
    deletenotused
else
    # 删除 docker-compose.jenkins.yml 文件,防止使用相同镜像
    rm -rf docker-compose.jenkins.yml && \

    # 复制 docker-compose.src.yml 文件,防止污染原文件
    cp docker-compose.src.yml docker-compose.yml && \

    # 替换镜像名标志位为最新镜像
    sed -i s%IMAGE_LATEST%$IMAGE%g docker-compose.yml && \

    # 使用 docker stack 启动服务
    docker stack deploy --with-registry-auth -c docker-compose.yml $CONTAINER && \

    deletenotused
fi

这里我们自己创建的镜像push到私有仓库是通过8082端口
拉取镜像可以通过8083端口,当访问8083端口拉取私有仓库没有的镜像,则会由proxy仓库去远程拉取镜像,然后保存到本地。

maven私有仓库

maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar

maven-releases:私库发行版jar

maven-snapshots:私库快照(调试版本)jar

maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。

将nexus中maven-central地址配置到maven的setting.xml文件中就能使用

需要注意的

在nexus中创建完私服后,我们需要在docker中配置下,因为我们启用的是http端口,所以首先需要修改下docker的配置文件,执行以下命令:

修改配置文件
vim /etc/docker/daemon.json
{
            "registry-mirrors": ["https://registry.docker-cn.com"],
            "insecure-registries": ["x.x.x.x:8083","x.x.x.x:8082"],
            "disable-legacy-registry": true
}

配置客户端,和私有registry交互
这里的地址就是私有仓库的地址

systemctl daemon-reload
systemctl start docker

nexus3使用docker运行/创建docker私有仓库/maven私有仓库的更多相关文章

  1. 使用Docker Toolbox 创建Docker虚拟机的方法-注意正确使用本地文件 file:参数的路径名

    使用Docker Toolbox 创建v1.12.6版的Docker虚拟机的方法, 一定要注意正确使用本地文件 file:// 参数的路径名, 之前尝试创建过多次,一直都没有成功过, 无法使用 fil ...

  2. Docker运行 Mono

    Docker运行 Mono Docker 是最近相当热门的一个名词,它是一个基于 Linux Container 的轻量化的虚拟技术,而微软也相当积极与 Docker 合作,在 Azure 上支持这个 ...

  3. docker 创建docker用户组,应用用户加入用户组

    在Linux系统下使用docker,为了避免每次输入命令都需要sudo,可以把用户加入docker用户组 创建docker用户组 sudo groupadd docker 普通用户加入docker用户 ...

  4. Singer 学习五 docker 运行说明

    介绍过一个工具knots ,方便Singer 可视化开发的工具,但是默认这个工具包含的tap 以及target 比较少(可以自己扩展) 同时这个工具就是基于docker 运行的 docker 运行的几 ...

  5. docker 运行 sqlserver

    docker 运行 sqlserver docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=sa123456' -e 'MSSQL_PID=Deve ...

  6. Docker Architecture、Docker Usage

    目录 . 引言 - 为什么要有Docker技术 . Docker简介 . Docker安装.部署.使用 . Docker安全 . Docker底层实现 . Docker网络配置 . Dockerfil ...

  7. 3.docker学习之docker与虚拟化

    虚拟化技术是一个总称,是一系列实现虚拟技术的统称.从广义上来说,虚拟化技术包括了虚拟机技术和容器技术, 所谓虚拟化技术最大的特点就是将一个真实的机器进行虚拟地分割,然后分割出来的部分可以独立使用   ...

  8. Docker 三剑客之 Docker Swarm

    上一篇:Docker 三剑客之 Docker Compose 阅读目录: Docker Machine 创建 Docker 主机 Docker Swarm 配置集群节点 Docker Service ...

  9. Docker三剑客之Docker Machine

    一.什么是Docker Machine Docker Machine 是Docker官方编排项目之一,使用go语言编写的,使用不同引擎在多种平台上快速的安装Docker环境,开源地址:https:// ...

随机推荐

  1. 对于当下国产CPU如火如荼有感

    国家在国家战略层面去做国产CPU这个事情,从初衷来说是好的.国产CPU战略如果能够实现,则会大大加强我国在计算机产业领域从头到尾的话语权与技术竞争力.但是个人觉得,事情不是那么简单.我将从下面几个方面 ...

  2. Asp.Net MVC 开发技巧(二)

    Linq查询 Linq的使用大体分为两种:语句表达式   和  方法 首先,我们要在控制器中定义好context private ApplicationDbContext db = new Appli ...

  3. plsql连接12cR2 PDB报错ORA-28040/ORA-01017

    http://hbxztc.blog.51cto.com/1587495/1907533 PS: 在数据库服务器上的oracle/network/admin/sqlnet.ora文件添加一行SQLNE ...

  4. January 13 2017 Week 2 Friday

    Those who turn back never reach the summit. 回头的人永远也到不了顶峰. I always turned back on my life road, so i ...

  5. 移动App中常见的Web漏洞

    智能手机的存在让网民的生活从PC端开始往移动端转向,现在网民的日常生活需求基本上一部手机就能解决.外卖,办公,社交,银行转账等等都能通过移动端App实现.那么随之也带来了很多信息安全问题,大量的用户信 ...

  6. 导出当前域内所有用户hash的技术整理

    0x00目标: 导出当前域内所有用户的hash 0x01测试环境: 域控:server2008 r2 杀毒软件:已安装* 域控权限:可使用net use远程登陆,不使用3389 0x02测试方法: ( ...

  7. Echarts 嵌套饼图实现,内环点击控制外环显示

    Echarts有交互事件,但是如果用其进行图形变更,恐怕就只有重新修改配置了. 如图,我想要实现,内圈的数据控制外圈的图形,当点击内环的某一块时,就可以实现,更改外环的目的. 起初我想能不能直接修改o ...

  8. 常用算法的C++实现

    常用算法的C++实现 // // DZAppDelegate.m // AlgorithmTest // // Created by dzpqzb on 13-8-4. // Copyright (c ...

  9. Linux下文件的打包、解压缩指令——tar,gzip,bzip2,unzip,rar

    本文是笔者对鸟叔的Linux私房菜(基础学习篇) 第三版(中文网站)中关于 Linux 环境下打包和解压缩指令的内容以及日常操作过程中所接触的相关指令的总结和记录,以供备忘和分享.更多详细信息可直接参 ...

  10. ZOJ-3278 8G Island---二分第k大

    题目链接: https://cn.vjudge.net/problem/ZOJ-3278 题目大意: 给出两个数列A和B,长度分别为N,M (1<=N, M<=10^5, 1<=Ai ...