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






推荐阅读
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • 本文介绍了如何利用npm脚本和concurrently工具,实现本地开发环境中多个监听服务的同时启动,包括HTTP服务、自动刷新、Sass和ES6支持。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 在Fedora 31上部署PostgreSQL 12
    本文详细介绍如何在Fedora 31操作系统上安装和配置PostgreSQL 12数据库。包括环境准备、安装步骤、配置优化以及安全设置,确保数据库能够稳定运行并提供高效的性能。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了Git分布式版本控制系统中远程仓库的概念和操作方法。通过具体案例,帮助读者更好地理解和掌握如何高效管理代码库。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 本文将详细介绍如何在没有显示器的情况下,使用Raspberry Pi Imager为树莓派4B安装操作系统,并进行基本配置,包括设置SSH、WiFi连接以及更新软件源。 ... [详细]
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社区 版权所有