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






推荐阅读
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 本文介绍了2015年九月八日的js学习总结及相关知识点,包括参考书《javaScript Dom编程的艺术》、js简史、Dom、DHTML、解释型程序设计和编译型程序设计等内容。同时还提到了最佳实践是将标签放到HTML文档的最后,并且对语句和注释的使用进行了说明。 ... [详细]
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社区 版权所有