Docker私有仓库搭建与界面化管理
一、关于Registry
官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。
但是有时候我们的使用场景需要我们拥有一个私有的镜像仓库用于管理我们自己的镜像。这个可以通过开源软件Registry来达成目的。
Registry在github上有两份代码:老代码库和新代码库。老代码是采用python编写的,存在pull和push的性能问题,出到0.9.1版本之后就标志为deprecated,不再继续开发。
从2.0版本开始就到在新代码库进行开发,新代码库是采用go语言编写,修改了镜像id的生成算法、registry上镜像的保存结构,大大优化了pull和push镜像的效率。
官方在Docker hub上提供了registry的镜像,我们可以直接使用该registry镜像来构建一个容器,搭建我们自己的私有仓库服务。
二、搭建Registry
首先搜索并拉取镜像
docker search registry # 建议先搜索一下,可以看一下相关的镜像,说不定哪天就有更好的镜像了
docker pull registry # 标签可以不加,因为当前最新就是v2
运行一个registry容器
docker run -d \ # 后台运行
--name registry-srv \ # 指定容器名
--restart=always \ # 设置自动启动
-p 5000:5000 \ # 端口映射宿主机,通过宿主机地址访问
-v /opt/zwx-registry:/var/lib/registry \ # 把镜像存储目录挂载到本地,方便管理和持久化
-v /opt/zwx-registry/srv-config.yml:/etc/docker/registry/config.yml \ # 把配置文件挂载到本地,方便修改和保存
registry
srv-config.yml内容如下
标红delete参数设置为true,是为了让仓库支持删除功能。默认没有这个参数,也就是不能删除仓库镜像。
version: 0.1
log:
fields:
service: registry
storage:
delete:
enabled: true
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
注册https协议(否则push安全认证过不去)
需要通过本地仓库下载镜像,均需要配置
vim /etc/docker/daemon.json # 默认无此文件,需自行添加,有则追加以下内容。
{ "insecure-registries":["xx.xx.xx.xx:5000"] } # 指定IP地址或域名
systemctl daemon-reload # 守护进程重启
systemctl restart docker # 重启docker服务
镜像上传与下载
docker push xx.xx.xx.xx:5000/nginx # 一定要注明仓库地址,否则会报错
docker pull xx.xx.xx.xx:5000/nginx
查看仓库镜像信息
curl -XGET http://xx.xx.xx.xx:5000/v2/_catalog # 查看仓库镜像列表(也可以通过windows浏览器打开查看)
curl -XGET http://xx.xx.xx.xx:5000/v2/image_name/tags/list # 查看指定应用镜像tag
三、搭建Registry web
首先搜索并拉取镜像
docker search docker-registry-web
docker pull hyper/docker-registry-web # 这个镜像用的人较多
运行一个registry web容器
docker run -d \ # 后台运行
--name registry-web \ # 指定容器名
--restart=always \ # 设置自动启动
-p 8000:8080 \ # 端口映射宿主机,通过宿主机地址访问
-v /opt/zwx-registry/web-config.yml:/etc/config.yml \ # 把配置文件挂载到本地,方便修改和保存
hyper/docker-registry-web
web-config.yml文件内容如下
标红readonly参数设置为false,是为了web页面可以显示删除按钮。默认是true,只读状态,没有删除按钮,只能查看。
registry:
# Docker registry url
url: http://10.88.77.32:5000/v2
# Docker registry fqdn
name: localhost:5000
# To allow image delete, should be false
readonly: false
auth:
# Disable authentication
enabled: false
部署完成后,浏览器打开仓库UI地址即可查看到所有应用镜像

选择任意应用镜像库,即可查看到该镜像的所有tag信息,每个tag后面都有个删除按钮(默认没有,配置参考config.yml)

四、快捷部署
集群模式可以通过docker stack快速部署registry和registry web。
新建配置文件srv-config.yml、web-config.yml放到指定路径,再新建docker-compose.yml文件,执行命令即可。
docker stack deploy -c docker-compose.yml RGT
version: '3.7' # docker stack 需要是3.0以上版本
services:
registry-srv: # 服务名
image: registry ports: # 映射端口
- 5000:5000 volumes: # 挂载镜像路径和配置文件,注意修改路径与实际一致
- /opt/zwx-registry:/var/lib/registry
- /opt/zwx-registry/srv-config.yml:/etc/docker/registry/config.yml deploy: # 设置单任务,并约束主节点运行
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager registry-web: # 服务名
image: hyper/docker-registry-web ports: # 映射端口
- 8000:8080 volumes: # 挂载配置文件,注意修改路径与实际一致
- /opt/zwx-registry/web-config.yml:/conf/config.yml environment:
- REGISTRY_URL=http://registry-srv:5000/v2
- REGISTRY_NAME=localhost:5000 deploy: # 设置单任务,并约束主节点运行
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
作者:Leozhanggg
出处: https://www.cnblogs.com/leozhanggg/p/12050322.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
Docker私有仓库搭建与界面化管理的更多相关文章
- Docker学习笔记 — Docker私有仓库搭建
Docker学习笔记 — Docker私有仓库搭建 目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2 和Mavan的管理一样,Dockers ...
- CentOS7 Docker私有仓库搭建及删除镜像 【转】
文章来源:centos7 Docker私有仓库搭建及删除镜像 如果不想用私有镜像库,你可以用docker的库 https://hub.docker.com 环境准备 环境:两个装有Docker 17. ...
- 【转载】使用宝塔对Linux系统进行界面化管理操作
腾讯云服务器和阿里云服务器的Centos系统都是没有Linux系统的一个版本,Centos系统的操作都是在没有类似Windows图形化操作界面的黑框框命令窗口进行操作的,需要使用到很多Linux操作命 ...
- docker私有仓库搭建(ubuntu 14.04和centos7)
最近是在做一个关于docker云化的项目,马上就要开始实战.下午先做了一个私有仓库搭建的实验,先大概做个笔记,有兴趣的蛮看一下吧. 先在所有机子上都安装上docker,我的是两台ubuntu,分别是1 ...
- Cloudera Hadoop 4 实战课程(Hadoop 2.0、集群界面化管理、电商在线查询+日志离线分析)
课程大纲及内容简介: 每节课约35分钟,共不下40讲 第一章(11讲) ·分布式和传统单机模式 ·Hadoop背景和工作原理 ·Mapreduce工作原理剖析 ·第二代MR--YARN原理剖析 ·Cl ...
- Docker学习笔记 — Docker私有仓库搭建【转载】
标签: Docker 2015-03-10 21:08 24190人阅读 评论(0) 收藏 举报 分类: Docker(26) 目录(?)[+] 和Mavan的管理一样,Dockers不仅 ...
- CentOS环境下Docker私有仓库搭建
本文讲述如何搭建docker私有仓库. 有了docker hub,为什么还要搭建docker私有仓库? 1.性能考虑:docker hub的访问要通过互联网,性能太低. 2.安全性:更多的时候,镜像不 ...
- docker私有仓库搭建和资源限制
Docker 私有仓库的搭建 docker 私有仓库默认只支持https协议的访问 不支持http协议 如果需要允许通过http协议访问 必须手动修改配置文件 docker官方默认提供的仓库 提供 ...
- centos7 docker私有仓库搭建
习Docker的过程中Docker的私有仓库一直没能成功,就是因为CentOS 6.x和CentOS 7默认引入了支持https认证,每次在push和pull的时候都会报错,今天是周末,利用一天的时间 ...
随机推荐
- 一个ip, 两个域名, 两个ssl, 访问多个不同的项目
在前面一篇中说过, 入了好几个坑. 后来使用了nginx+tomcat配置的方式. 终于成功了. 因为头一次使用nginx, 不知道具体怎么操作, 于是我在操作的时候, 按照以下几个步骤执行的: 导航 ...
- java property 配置文件管理工具框架,避免写入 property 乱序
property property 是 java 实现的 property 框架. 特点 优雅地进行属性文件的读取和更新 写入属性文件后属性不乱序 灵活定义编码信息 使用 OO 的方式操作 prope ...
- openresty(nginx)中使用lua脚本获取请求IP地址的代码
人狠话不多,直接上代码:------------------------------------------------------------------------------------- lo ...
- Django笔记-连载(记录2018-12-16)
1.django从1.9开始ForeignKey中的on_delete参数是必须的. hbook = models.ForeignKey('BookInfo')这句代码就让BookInfo类和Hero ...
- python容器类型字典的操作
字典(dict):由大括号进行描述一组键值对,其键值对之间使用冒号隔开,键值对与键值对之间使用逗号隔开: 注意:字典的key可以为数字,但是不可以重复,因为key是唯一标识符: 1.声明一个字典:语法 ...
- TraceID在AspNETCore日志排障中的应用
前言 .NetCore日志,相信大家多少都接触过,博客园有关 ① AspNetCore依赖注入第三方日志组件 ②第三方日志组件Nlog,Serilog 应用方法的博文层出不穷. 结合程序的部署结构 ...
- 【NHOI2018】字符串变换
[题目描述] 给你一个全部由大小写字母组成的字符串,你每次可以将一个小写字母变换成对应的大写字母,或把一个大写字母变换成对应的小写字母.请问:至少要进行多少次变换才可以使整个字符串全部由大写字母或全部 ...
- Spring(Bean)6
生命周期构造 --->set--->Bean init前后执行 (新创建 类) public class MyBeanPostProcesser implements BeanPostPr ...
- redis - redis数据结构与API
通用命令 keys:遍历所有的key[keys一般不再生产环境使用],时间复杂度O(n) keys * keys he* keys he[h-l]* keys ph? dbsize:计算key的总数, ...
- mysql那些事(3)小数如何存储
创建mysql数据表的时候,经常会遇到存储小数(浮点数)的情况,如:价格,重量,身高等. 目前大的公司流行三种存储方案: 1.将数据扩大10的倍数达到使用整数类型存储目的. 比如价格,我们经常以分为单 ...