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:// ...
随机推荐
- 封装和 property方法
封装其实就是一个类用双下划线把自己的属性或者方法给限制住 不让其他的类直接调用或者修改 必须通过这个类来进行操作,这个类通过双下划线__把自己的属性和方法给限制住了 封装就是私有的过程 把父类中的属 ...
- TMG 2010 使用脚本来导入URL集和域名集
作为一个网管,相信有领导叫你限制员工上网的情况,例如只限制员工访问某些网站.在禁止的网站数量少的时候,添加URL集或者域名集是一件很简单的事情,如果禁止的网站数量多达1500个呢?如果再使用ISA S ...
- 软件cs页面分辨率测试
1.为什么软件要进行分辨率兼容性测试 用户的环境可能大多数是主流的分辨率,如1024x768,1366x700,但是我们还是遇到了一些使用上网本的用户,他的上网本分辨率是1024x600,由于我们的软 ...
- August 31st 2017 Week 35th Thursday
Whatever happened in the past is gone, the best is always yet to come. 无论过去发生什么,最好的永远尚未到来. Correct j ...
- HTTP协议图--HTTP 协议报文结构
1.HTTP 报文 用于 HTTP 协议交互的信息被称为 HTTP 报文.请求端(客户端)的 HTTP 报文叫做请求报文:响应端(服务器端)的叫做响应报文.HTTP 报文本身是由多行(用 CR[car ...
- Discuz3.3注册程序修改添加记录推荐人账号
Discuz3.3注册入口地址为:member.php?mod=register 一.member.php: 打开之后,代码非常简单. 其中有一句: $mod = !in_array($discuz- ...
- centos7安装docker-ce新版
先卸载系统的旧版本yum remove docker \ docker-common \ docker-selinux \ ...
- struts配置中的常量定义
一.常量可以在struts.xml或struts.properties中配置,建议在struts.xml中配置,两种配置方式如下: (1)在struts.xml文件中配置常量 <struts&g ...
- JavaScript事件的委派与事件的绑定
事件的委派 在很多需求中,通常元素是动态创建添加到一个父元素中的,这时候我们点击新增的元素是没有反应的 <script type="text/javascript"> ...
- java 相等测试与继承
内容中包含 base64string 图片造成字符过多,拒绝显示