热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

k8s进阶之搭建私有镜像仓库

企业级私有镜像仓

前言:本来这一章节应该继续写k8s中的容器,但需要用到私有镜像仓库,所以中间插一个特别章,搭建私有仓库。


企业通常会因为如下几个原因,需要搭建自己的私有 docker registry:

  • 限制 docker 镜像的分发范围,例如:只允许在内网分发,或者只允许被授权的用户获取 docker 镜像

  • 提高推送 docker 镜像以及抓取 docker 镜像时的网络传输速度


在这种情况下,您需要在 Kubernetes 中使用私有 docker registry 中的 docker 镜像。

目前大家用的比较多的有registry和harbor,我们今天两种都来说一下。

搭建registry:

从docker仓库拉取registry私服仓库镜像。

docker pull registry


[test@test01 ~]$ docker pull registry
Using default tag: latest
latest: Pulling from library/registry
e95f33c60a64: Pull complete
4d7f2300f040: Pull complete
35a7b7da3905: Pull complete
d656466e1fe8: Pull complete
b6cb731e4f93: Pull complete
Digest: sha256:da946ca03fca0aade04a73aa94b54ff0dc614216bdd1d47585f97b4c1bdaa0e2
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest

然后使用docker images来查看刚刚我们拉取的镜像

[test@test01 ~]$ docker images
registry latest 5c4008a25e05 4 weeks ago 26.2MB

下面我们进行仓库安装,运行下面的命令:(之前也写过docker方面的,大家可以翻着去看下)

docker run -d -p 5000:5000  --name myregistry --restart=always registry


ca4477c843436974b6f743765767348edd6753106ecd8dad03b09f6d406313b3

参数详解:
 run:启动
    -d: 后台运行
    -p 5000:5000 宿主机5000端口映射到容器5000端口(registry仓库默认开启5000端口)
    --name myregistry 容器重命名
    --restart=always 重启设置()
    registry[:tag] 需要启动到仓库名称(不添加tag,默认拉取最新版:latest

使用docker ps 查看运行的容器,可以看到我们刚才运行的私服仓库了

ca4477c84343 registry "/entrypoint.sh /etc…" 37 seconds ago Up 37 seconds 0.0.0.0:5000->5000/tcp myregistry

下面我们要为我们的docker进行设置,不然无法识别我们刚才安装的私服仓库。修改/etc/docker/daemon.json文件,如果没有则创建,vim /etc/docker/daemon.json,添加如下内容:{ "insecure-registries":["192.168.0.100:5000"] },  ,注意 后边还有个逗号, 英文模式下的逗号。192.168.0.100改为自己的ip


Docker 自从1.3版本以后,交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以我们需要对docker的配置文件进行修改,解决办法是:在docker server启动的时候,增加启动参数,默认使用HTTP访问。编辑文件, /usr/lib/systemd/system/docker.service


在第14行后面增加 :--insecure-registry  192.168.0.100:5000,此处ip换成你registry所在的ip。

然后重启docker,完成配置。

systemctl daemon-reload 
systemctl restart docker

使用docker info命令查看我们配置的registry仓库,

至此,registry就搭建完毕啦。


下边我们说下harbor,也推荐大家使用这种。Harbor 比 registry相比好处是: harbor支持多种功能、图形化界面管理、多用户权限、角色管理机制、安全机制。

我们使用docker-compose来进行安装,也可以参考官方安装文档:

https://github.com/goharbor/harbor

我这里是在github上下载的最新安装包(不能下载的小伙伴留言给我  我下载好给链接地址):

https://github.com/goharbor/harbor/releases/download/v2.1.4/harbor-online-installer-v2.1.4.tgz

 [test@test01 harbor]$tar xf harbor-online-installer-v2.1.4.tgz 
cd harbor
[test@test01 harbor]$ ls
common.sh  harbor.yml.tmpl  install.sh  LICENSE  prepare


参数详解:  打开harbor.yml.tmpl

hostname: reg.mydomain.com    # 可以修改为  ip   也可以做映射


http:
port: 80


https:
port: 443
  certificate: /your/certificate/path   # 证书公钥
private_key: /your/private/key/path # 证书公钥






harbor_admin_password: Harbor12345    #登录的默认密码 默认用户admin


database:
password: root123
max_idle_conns: 50
max_open_conns: 1000


data_volume: /data  # 数据存储地址






clair:
updaters_interval: 12


trivy:
ignore_unfixed: false
skip_update: false
insecure: false


jobservice:
max_job_workers: 10


notification:
webhook_job_max_retry: 10


chart:
absolute_url: disabled


log:
level: info
local:
rotate_count: 50
rotate_size: 200M
location: /var/log/harbor




_version: 2.0.0








proxy:
http_proxy:
https_proxy:
no_proxy:
components:
- core
- jobservice
- clair
- trivy

上述修改好以后,执行install.sh  。这里注意下,要使用docker-compose,版本1.18.0+。安装过程省略。

然后我们就可以通过浏览器来进行访问了:

192.168.0.20

默认只有一个仓库 其他是我自己在用的。

那怎么使用呢?

在机器上登录.

直接使用  docker login -u admin -p Harbor12345  192.168.0.20

如果失败 就要修改   /etc/docker/daemon.json  参考上边修改

上传镜像:

首选本地有镜像,然后打tag如下

docker tag tomcat:latest 192.168.0.20/library/tomcat:v1  #打标签

docker push 192.168.0.20/library/tomcat:v1 #上传镜像

就成功,同理  如果需要拉取私有镜像,登录到harbor,查看镜像地址

docker pull 192.168.0.20/library/tomcat:v1  就可以了






推荐阅读
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文介绍了Python函数的定义与调用的方法,以及函数的作用,包括增强代码的可读性和重用性。文章详细解释了函数的定义与调用的语法和规则,以及函数的参数和返回值的用法。同时,还介绍了函数返回值的多种情况和多个值的返回方式。通过学习本文,读者可以更好地理解和使用Python函数,提高代码的可读性和重用性。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • Annotation的大材小用
    为什么80%的码农都做不了架构师?最近在开发一些通用的excel数据导入的功能,由于涉及到导入的模块很多,所以开发了一个比较通用的e ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
author-avatar
摄影爱好者Summer_100
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有