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. package.json作用

    这个文档的内容是你必须要知道的,它必须是JSON文本格式.每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元 ...

  2. 图书管理系统 基于form组件

    models: from django.db import models # Create your models here. class Book(models.Model): name = mod ...

  3. 支持xcode6的缓动函数Easing以及使用示例

    支持xcode6的缓动函数Easing以及使用示例 用xcode6新建工程后,直接导致不支持之前的Easing缓动函数的代码,经过修改后就可以正常使用了,虽然比不上POP高大上的动画,但用缓动函数的动 ...

  4. docker容器修改hosts文件,重启失效问题解决

    docker容器修改hosts文件 搜了一大批资料,有说需要在docker run --hosts...改:dockerfile改:有点麻烦,下面方案比较好: 参照docker吧(https://ti ...

  5. 沉淀再出发:java中的CAS和ABA问题整理

    沉淀再出发:java中的CAS和ABA问题整理 一.前言 在多并发程序设计之中,我们不得不面对并发.互斥.竞争.死锁.资源抢占等等问题,归根到底就是读写的问题,有了读写才有了增删改查,才有了所有的一切 ...

  6. Asp.Net MVC Identity 2.2.1 使用技巧(四)

    使用用户管理器之用户管理 一.建立模型 1.在Models文件夹上点右键 >添加>类     类的名称自定,我用AdminViewModels命名的. 2.更改模板自建的AdminView ...

  7. December 17th 2016 Week 51st Saturday

    Great minds have purpose, others only have wishes. 杰出的人有着目标,其他人只拥有愿望. Are you clear about the differ ...

  8. web安全职位面试题目汇总

    Domain 解释一下同源策略 同源策略,那些东西是同源可以获取到的 如果子域名和顶级域名不同源,在哪里可以设置叫他们同源 如何设置可以跨域请求数据?jsonp是做什么的? Ajax Ajax是否遵循 ...

  9. 定义路由的state参数

    使用$stateProvider.state('stateName', {url: '', params: {}, views: {},...})创建路由,其中部分参数解析: params: 是一个包 ...

  10. win7装postgresql10.4

    第一步: 第二步: 第三步: 第四步: 第五步: 下载地址:https://get.enterprisedb.com/postgresql/postgresql-10.4-1-windows-x64. ...