微服务架构 - 搭建docker本地镜像仓库并提供权限校验及UI界面
搭建docker本地镜像仓库并提供权限校验及UI界面
docker本地镜像仓库的作用跟maven私服差不多,特别是公司级或者是小组级开发好的docker仓库可以上传到本地镜像仓库中,需要用时,直接从本地镜像仓库中拉取镜像即可,因为镜像仓库在自己公司,可以做到安全可控了。下面介绍搭建本地镜像仓库的过程。
1、环境准备
docker本地镜像仓库本身也是一个docker镜像,为此如果需要搭建本地镜像仓库,则首先要搭建docker的环境,具体搭建docker环境的步骤,大家可以之前的一篇文章:《CentOS7离线部署docker》
镜像仓库的镜像为:
registry 2.4.1 8ff6a4aae657 2 years ago 172MB
同时需要为本地镜像仓库提供UI界面,则UI界面的镜像为:
hyper/docker-registry-web latest 0db5683824d8 2 years ago 599MB
2、配置本地仓库
(1)、创建目录用于本地仓库所需的,即:
mkdir /opt/docker_reg
(2)、创建自定义证书的目录,即:
mkdir /opt/docker_reg/certs
然后进入/opt/docker_reg/certs目录,进行如下操作:
openssl req \
-new \
-newkey rsa:4096 \
-days 365 \
-subj "/CN=192.168.208.141" \
-nodes \
-x509 \
-keyout auth.key \
-out auth.cert
(3)、创建本地仓库的配置文件目录,即:
mkdir /opt/docker_reg/config
并在该目录下创建registry.yml配置文件,配置信息为:
version: 0.1
storage:
filesystem:
rootdirectory: /registry
delete:
enabled: true
http:
addr: 0.0.0.0:5000
auth:
token:
realm: http://192.168.208.141:8080/api/auth
service: 192.168.208.141:5000
issuer: test
rootcertbundle: /etc/docker/registry/auth.cert
log:
level: info
notifications:
endpoints:
- name: listener
url: http://192.168.208.141:8080/api/notification
timeout: 500ms
threshold: 5
backoff: 1s
(4)、创建本地仓库所需要的文件目录,即:
mkdir /opt/docker_reg/reg
3、配置UI界面
(1)、创建UI界面所面的配置文件路径,即:
mkdir -p /opt/docker_reg/ui/config
在该目录下创建配置文件registry-ui.yml,配置内容为:
registry:
url: http://registry:5000/v2
name: 192.168.208.141:5000
readonly: false
auth:
enabled: true
key: /conf/auth.key
issuer: test
注意:
- registry.name的配置内容要与上面registry.yml配置文件中的auth.token.service的值一样
- registry.auth.issuer的配置内容要与上面registry.yml配置文件中的auth.token.issuer的值一样
4、docker-compose部署容器
利用docker-compose来部署仓库以及UI界面容器,如果没有安装docker-compose的话,请执行如下命令:
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
注意:如果运行环境不能直接联外网,则可以先下载二进制包,然后手动放置到相应目录,并授权即可。
在/opt/docker_reg目录下创建docker-compose.yml文件,内容如下:
version: '2'
services:
registry-ui:
image: hyper/docker-registry-web:latest
ports:
- 8080:8080
volumes:
- ./ui/config/registry-ui.yml:/conf/config.yml:ro
- ./certs/auth.key:/conf/auth.key:ro
- ./ui/db:/data
networks:
- registry-net
depends_on:
- registry
registry:
image: registry:2.4.1
ports:
- 5000:5000
volumes:
- ./config/registry.yml:/etc/docker/registry/config.yml:ro
- ./certs/auth.cert:/etc/docker/registry/auth.cert:ro
- ./reg:/var/lib/registry
networks:
- registry-net
networks:
registry-net:
编辑好配置文件后,即可创建容器,即在/opt/docker_reg目录执行:
docker-compose up -d
运行成功后,通过浏览器访问http://192.168.208.141:8080

有一个默认管理员账号,即用户名为admin,密码为admin
5、测试仓库
通过UI界面,用admin用户,创建一个具有pull和push权限的用户:
(1)、admin登录后,点击“Users”,即:

(2)、创建jgyw用户,密码为jgyw123,即:

(3)、授与jgyw用户write-all、UI_USER角色,write-all角色即是有pull和push权限,UI_USER角色即可以查看UI界面,即:

用户创建好后,用jgyw用户将镜像push到仓库中,例如将如下镜像push到仓库中:
openzipkin/zipkin 2.12.1 cf8d9aacddc0 5 weeks ago 144MB
(1)、首先利用tag命令,即:
docker tag openzipkin/zipkin:2.12.1 192.168.208.141:5000/jgyw/zipkin:2.12.1
(2)、然后利用jgyw用户登录本地仓库,即:
docker login 192.168.208.141:5000
然后输入用户名和密码,即可登录。
如果在登录本地仓库时报:
Error response from daemon: Get https://192.168.208.141:5000/v1/users/: http: server gave HTTP response to HTTPS client
则需要将/usr/lib/systemd/system/docker.service文件中ExecStart值修改为如下形式,即:
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.208.141:5000
然后重启服务,即:
systemctl daemon-reload
systemctl restart docker
(3)、push镜像到本地仓库,即:
docker push 192.168.208.141:5000/jgyw/zipkin:2.12.1
成功之后,通过jgyw用户登录UI界面,就可以看到相应的镜像了,即:

(4)、测试pull镜像
首先先将原来的192.168.208.141:5000/jgyw/zipkin:2.12.1删除掉,即:
docker rmi -f 192.168.208.141:5000/jgyw/zipkin:2.12.1
然后从本地仓库中pull镜像下来,即:
docker pull 192.168.208.141:5000/jgyw/zipkin:2.12.1
关注我
以你最方便的方式关注我:
微信公众号:

微服务架构 - 搭建docker本地镜像仓库并提供权限校验及UI界面的更多相关文章
- centos7系统下搭建docker本地镜像仓库
## 准备工作 用到的工具, Xshell5, Xftp5, docker.io/registry:latest镜像 关于docker的安装和设置加速, 请参考这篇博文centos7系统下 docke ...
- 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现
庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介 在第七篇文章<庐山真面目之七微服务架构Consul ...
- 基于 registry 搭建 Docker 私有镜像仓库
今天主要介绍使用 registry 来搭建 Docker私有镜像仓库,方便在公司内部项目中使用,registry 也是 Docker 官方提供的一个镜像,操作也很简单. dockerhub: http ...
- springcloud微服务架构搭建
SpringCloud微服务框架搭建 一.微服务架构 1.1什么是分布式 不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 1.2什么是集群 多台服务器部署相同应用构成一个集群 作用:通 ...
- 搭建docker 私有镜像仓库
前期准备 服务器:centos 7.3 docker-ce: 18.06.1-ce docker-compose: 1.22.0 docker 安装 首先,更新系统 yum update yum up ...
- 使用harborv1.8.0-rc1 搭建docker私有镜像仓库
概述 搭建一个私有仓库 harbor介绍 harbor是一个开源的docker容器仓库,由下面几个组件组成 + proxy:用来接收docker客户端和浏览器端的请求,并且把请求转发给后端的服务 + ...
- centos 7.1搭建docker本地私有仓库返回500错误
之前有一篇写到在ubuntu14.04系统上安装私有仓库,遇到了两个问题,本次在centos7上遇到了另外一个问题. 安装完仓库并运行registry镜像之后发现push和pull操作都会返回一个50 ...
- 使用Harbor搭建Docker私有镜像仓库
Harbor介绍:https://goharbor.io/ 前置条件 需要安装了docker和docker-compose 下载Harbor 在harbor下载页(https://github.com ...
- springcloud微服务架构搭建:服务调用
spring-cloud调用服务有两种方式,一种是Ribbon+RestTemplate, 另外一种是Feign. Ribbon是一个基于HTTP和TCP客户端的负载均衡器,类似nginx反向代理,可 ...
随机推荐
- 关于如何通过kali linux 攻击以及破解WPA/WPA2无线加密
http://blog.csdn.net/wingstudio_zongheng/article/details/51435212 1.前期准备 1)打开一个终端 执行命令: ifconfig ...
- Windows10上搭建Kinect 2 开发环境
因为Visual Studio 2017的应用最低只能面向windows10,而Kinect SDK 2.0的系统版本要求是windows 8,所以不得不下载Visual Studio 2013 co ...
- PHP合并数组的三种方法的分析与比较
常用的合并数组的方法有三种:array_merge().array_merge_recursive().+,下面一个一个介绍 array_merge() 此函数合并一个或多个数组,当输入的数组中有相同 ...
- SQL基本语句的优化10个原则
原则一:尽量避免在列上进行运算,这样会导致索引失效. 例如: ; 优化: SELECT * FROM table WHERE d >= '2011-01-01'; 原则二:使用JOIN时,应该用 ...
- 用js来实现那些数据结构16(图02-图的遍历)
上一篇文章我们简单介绍了一下什么是图,以及用JS来实现一个可以添加顶点和边的图.按照惯例,任何数据结构都不可或缺的一个point就是遍历.也就是获取到数据结构中的所有元素.那么图当然也不例外.这篇文章 ...
- SOFA 源码分析 —— 过滤器设计
前言 通常 Web 服务器在处理请求时,都会使用过滤器模式,无论是 Tomcat ,还是 Netty,过滤器的好处是能够将处理的流程进行分离和解耦,比如一个 Http 请求进入服务器,可能需要解析 h ...
- Page_Load不要忘了if (!IsPostBack)
Page_Load不要忘了if (!IsPostBack) 问题:在DropDownList的SelectedIndexChanged事件中绑定数据,运行时,DropDownList控件的Select ...
- 最近面了不少java开发,据此来说下我的感受:哪怕事先只准备1小时,成功概率也能大大提升
本人最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一些java初级和高级开发的候选人,在面试过程中,我自认为比较慎重,遇到问题回答不好的候选人,我总会再三从不同方面提问,只 ...
- Redis模糊查询
最近使用Redis优化项目功能,其中有一部分为模糊查询,找了很多帖子,也没有找到很好的解决方案和思路,最终皇天不负有心人啊,终于让我找到了!!! 感谢该帖作者:WalkerAlone 原文链接:ht ...
- Mysql-自带的一些功能,基本用法(视图,触发器,事务,存储过程,函数,流程控制)
一. 视图 二. 触发器 三. 事务 四. 存储过程 五. 函数 六. 流程控制 一 .视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用 ...