Kubernetes本地私有仓库实战
在讲解搭建私有仓库之前,先来了解下为什么要用私有仓库??
本文基于registry搭建本地私有仓库,使用私有仓库的优点如下:
- 节省网络带宽,针对于每个镜像不用去Docker官网仓库下载;
- 下载Docker镜像从本地私有仓库中下载;
- 组建公司内部私有仓库,方便各部门使用,服务器管理更加统一;
- 可以基于GIT或者SVN、Jenkins更新本地Docker私有仓库镜像版本。
官方提供Docker Registry来构建本地私有仓库,目前最新版本为v2,最新版的docker已不再支持v1,Registry v2使用Go语言编写,在性能和安全性上做了很多优化,重新设计了镜像的存储格式。如下为在192.168.72.132服务器上构建Docker本地私有仓库的方法及步骤:
(1) 下载Docker registry镜像,命令如下:
docker pull docker.io/registry
(2) 启动私有仓库容器,启动命令如下:
#宿主机上创建本地数据目录
mkdir -p /data/registry/
#创建私有仓库容器,registry默认端口5000
docker run -itd -p 5000:5000 -v /data/registry:/var/lib/registry docker.io/registry
#默认是桥接模式,也可使用none模式,用pipework绑定ip
# -v 参数,宿主机目录与容器内目录做映射,保证数据持久化,即使误操作把容器删了,数据还会保存在宿主机映射的目录下。
docker run -itd --net=none -p 5000:5000 -v /data/registry:/var/lib/registry docker.io/registry
pipework br0 050d2131afc4 192.168.1.100/24@192.168.1.1
docker exec 050d2131afc4 ifconfig
(3) 上传镜像至本地私有仓库:
客户端上传镜像至本地私有仓库,如下以nginx镜像为例,将nginx上传至私有仓库服务器。
docker pull nginx docker tag docker.io/nginx 192.168.0.100:5000/nginx docker push 192.168.0.100:5000/nginx
默认情况下,直接push接上镜像名,是传向docker官方仓库,这就会导致报错;我们应该是传到自己的私有仓库192.168.0.100仓库中,此时又会报错,说本地没有这个镜像,这是因为docker在push时把 [192.168.1.100:5000/nginx] 这个看成是一个地址了;我们需要把原本的镜像名tag改一下,其实就是伪装一下,伪装成是一个往仓库传的镜像,其实 [192.168.72.100:5000/nginx] 可以理解为就是一个镜像名称,告诉docker push这是一个指令,这样就可以上传了。
注意: ip地址是私有仓库容器的地址,不是宿主机的ip地址。
上述工作都准备妥当后,此时你会发现,在push上传时非常慢且报时间超时错误,这是因为docker仓库默认是走https请求,而我们上传镜像时走的是http请求,docker push认为这个仓库是一个不安全的;解决方法就是在主配文件中添加如下代码,告诉docker push允许我走http请求(若你就是https就不用加这句代码),同时重启docker服务。
# yum安装方式
vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry 192.168.1.100:5000'
## 二进制方式
vim /etc/docker/daemon.json
{
"insecure-registries":["192.168.1.100:5000"]
}
这时我们再来push就正常了,我们push上传至私有仓库的镜像就存放在我们映射的/data/registry/宿主机目录下,从该目录下删除镜像后,仓库里的镜像也会被同步删除。
ls /data/registry/docker/registry/v2/repositories/
、、
至此,docker本地私有仓库部署完毕,可以向仓库中添加或者更新Docker镜像,其他机器也可以向私有仓库上传镜像和下载镜像。
Kubernetes使用本地仓库
k8s使用本地仓库镜像创建pod,可通过Dashboard页面去创建,也可通过命令去创建。
- Dashboard页面创建方式
- 命令行创建方式
#创建pod,可通过kubectl run --help查看帮助 kubectl run nginx-web --image=172.17.32.2:5000/nginx
##创建pod,暴露端口,设置副本集
kubectl run nginx-web --image=172.17.32.2:5000/redis --port=6379 --replicas=5
、、欢迎指正!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探