nexus3使用docker运行/创建docker私有仓库/maven私有仓库
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私有仓库的更多相关文章
- 使用Docker Toolbox 创建Docker虚拟机的方法-注意正确使用本地文件 file:参数的路径名
使用Docker Toolbox 创建v1.12.6版的Docker虚拟机的方法, 一定要注意正确使用本地文件 file:// 参数的路径名, 之前尝试创建过多次,一直都没有成功过, 无法使用 fil ...
- Docker运行 Mono
Docker运行 Mono Docker 是最近相当热门的一个名词,它是一个基于 Linux Container 的轻量化的虚拟技术,而微软也相当积极与 Docker 合作,在 Azure 上支持这个 ...
- docker 创建docker用户组,应用用户加入用户组
在Linux系统下使用docker,为了避免每次输入命令都需要sudo,可以把用户加入docker用户组 创建docker用户组 sudo groupadd docker 普通用户加入docker用户 ...
- Singer 学习五 docker 运行说明
介绍过一个工具knots ,方便Singer 可视化开发的工具,但是默认这个工具包含的tap 以及target 比较少(可以自己扩展) 同时这个工具就是基于docker 运行的 docker 运行的几 ...
- docker 运行 sqlserver
docker 运行 sqlserver docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=sa123456' -e 'MSSQL_PID=Deve ...
- Docker Architecture、Docker Usage
目录 . 引言 - 为什么要有Docker技术 . Docker简介 . Docker安装.部署.使用 . Docker安全 . Docker底层实现 . Docker网络配置 . Dockerfil ...
- 3.docker学习之docker与虚拟化
虚拟化技术是一个总称,是一系列实现虚拟技术的统称.从广义上来说,虚拟化技术包括了虚拟机技术和容器技术, 所谓虚拟化技术最大的特点就是将一个真实的机器进行虚拟地分割,然后分割出来的部分可以独立使用 ...
- Docker 三剑客之 Docker Swarm
上一篇:Docker 三剑客之 Docker Compose 阅读目录: Docker Machine 创建 Docker 主机 Docker Swarm 配置集群节点 Docker Service ...
- Docker三剑客之Docker Machine
一.什么是Docker Machine Docker Machine 是Docker官方编排项目之一,使用go语言编写的,使用不同引擎在多种平台上快速的安装Docker环境,开源地址:https:// ...
随机推荐
- Linux动态链接库.so文件的创建与使用
1. 介绍 使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个"程序函数库"简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可 ...
- centos编译安装php7
环境说明 VMware 12 中搭建的CentOS 7 x64 4核 2G内存 环境中已经安装了http://blog.csdn.net/u014595668/article/details/5016 ...
- 编码学习---代码OJ网站
代码OJ网站: https://leetcode-cn.com/accounts/login/
- 沉淀再出发:jetty的架构和本质
沉淀再出发:jetty的架构和本质 一.前言 我们在使用Tomcat的时候,总是会想到jetty,这两者的合理选用是和我们项目的类型和大小息息相关的,Tomcat属于比较重量级的容器,通过很多的容器层 ...
- XML序列化 System.Xml.Serialization
一.定义元数据 XML序列化常用属性:XMLRoot,XMlType.XMLText.XMLEnum等 [Serializable] [XmlRoot] public class Product { ...
- scala当中的文件操作和网络请求
1.读取文件当中每一行的数据 def main(args: Array[String]): Unit = { //注意文件的编码格式,如果编码格式不对,那么读取报错 val file: Buffere ...
- BZOJ1468:Tree(点分治)
Description 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K Input N(n<=40000) 接下来n-1行边描述管道,按照题目中写的输入 接下来是 ...
- Django中模型(五)
Django中模型(五) 六.模型查询 1.概述 查询集,表示从数据库获取的对象集合. 过滤器就是一个函数,基于所给的参数限制查询集结果.查询集可以有多个过滤器. 从sql角度来说,查询集合等价于se ...
- CentOS 安装jira 6.3.6
java 目录: /usr/java/jdk1.6.0_45 tomcat 目录:/usr/tomcat-7.0.29 jira 目录: /usr/local/jira jira 访问地址: cent ...
- pyhton 自动化pymysql操作mysqldb数据库增删改查封装
# coding=utf-8 import pymysql import os import configparser """ /* @:param: python ve ...