热门标签 | 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  就可以了






推荐阅读
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 科研单位信息系统中的DevOps实践与优化
    本文探讨了某科研单位通过引入云原生平台实现DevOps开发和运维一体化,显著提升了项目交付效率和产品质量。详细介绍了如何在实际项目中应用DevOps理念,解决了传统开发模式下的诸多痛点。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 20100423:Fixes:更新批处理,以兼容WIN7。第一次系统地玩QT,于是诞生了此预备式:【QT版本4.6.0&#x ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 本文详细介绍了C++中map容器的多种删除和交换操作,包括clear、erase、swap、extract和merge方法,并提供了完整的代码示例。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
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社区 版权所有