首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
kubernetes与velero的第一次尝试
2
在Kubernetes中如何针对Namespace进行资源限制?
3
kubernetes之metrics-server安装与配置
4
kubernetes部署metrics-server
5
Kubernetes1.20.9摘掉一个master节点再重新加入(ETCD需要注意的)
6
Kubernetes 1.17.17升级到1.18.20
7
Kubernetes 1.18.20升级到1.19.12
8
Kubernetes 1.19.12升级到1.20.9(强调一下selfLink)
9
Kubernetes 1.16.15升级到1.17.17
10
使用 kainstall 工具一键部署 kubernetes 高可用集群
11
附034.Kubernetes_v1.21.0高可用部署架构二
12
附016.Kubernetes_v1.17.4高可用部署
13
附022.Kubernetes_v1.18.3高可用部署架构一
14
附024.Kubernetes_v1.18.3高可用部署架构二
15
使用 StatefulSet 部署 etcd 集群
16
Kubernetes 稳定性保障手册 -- 极简版
17
Linux(centos7)离现安装kubernetes1.19.2和docker——组件部分
18
docker register 私有仓库部署 - http模式
19
KubeSphere 开源 KubeEye:Kubernetes 集群自动巡检工具
20
K8S 中的 CPUThrottlingHigh 到底是个什么鬼?
21
全链路分布式跟踪系统 Apache SkyWalking 入门教程
22
pod Evicted的状态究竟是何人所为
23
使用 ezctl 工具部署和管理 Kubernetes 集群
24
Kubernetes部署策略详解
25
kubernetes容器探针检测
26
使用Spring Boot实现动态健康检查HealthChecks
27
真一文搞定 ingress-nginx 的使用
28
K8S备份、恢复、迁移神器 Velero
29
一次关于k8s kubectl top 和 contained ps 不一致的问题探究
30
kubernetes备份恢复之velero
31
使用 Velero 进行集群备份与迁移
32
TKE集群中nginx-ingress使用实践
33
使用velero进行kubernetes灾备
34
Kubernetes 映射外部服务
35
运维体系建设套路
36
k8s解决pod调度不均衡的问题
37
ingress中虚拟路径解决方案
38
容器下的两地三中心建设
39
k8s集群外的主机访问pod的解决方案
40
k8s基础-健康检查机制
41
k8s基础-标签使用
42
ingress-nginx请求改写
43
nginx ingress server alias 多域名多证书问题
44
JAVA | Java 解决跨域问题 花式解决跨域问题
45
如何通过ingress-nginx实现应用灰度发布?
46
在Kubernetes(k8s)中使用GPU
47
使用 Prometheus-Operator 监控 Calico
48
使用Kubespray部署Kubernetes集群
49
云原生下的CI/CD:Argo CD 详解,手把手教你入门
50
Pod的健康检查机制
清单首页k8s文章详情

docker register 私有仓库部署 - http模式

前言

有些朋友看完了我的kubernetes部署文章之后,咨询关于私有仓库的部署。 私有仓库的部署可以分为三个层次:

  • docker register 直接使用,IP + 5000 端口号,以 http 的形式访问
  • docker register 使用 haproxy 转发域名的方式,以 http 的形式访问
  • docker register 使用 haproxy 转发域名的方式,加上自签或者购买的ca证书,以 https 的形式访问

其中:还可以配置是否需要使用用户名、密码来登陆访问私有仓库。

目标

本篇章先简单介绍一下 第一种方式 ,后续有时间继续深入将另外两种方式逐步编写文章讲述。

前置条件

Centos 7 系统已安装好了 docker 服务。 为了避免影响实验,可以将selinux以及firewall都关闭了。

目标:下载register镜像以及推送kubernetes的pmd镜像

要完成这个目标,首先需要安装启动好register

首先拉取register的镜像

首先可以查阅一下docker hub register的介绍

可以看到现在register 2.0的版本还是比较新的。那么,我们就采用register 2.0来进行实验处理。

代码语言:javascript
复制
[root@server81 registry]# docker search registry

搜索到了这个registry的镜像,表示了官方以及加星,那么下面就下载一下吧。

代码语言:javascript
复制
[root@server81 registry]# docker pull docker.io/registry

查阅一下docker hub register的介绍中关于docker启动的介绍

好了,看到这里大伙应该也知道怎么启动registry了吧。

那么下面我首先给registry的镜像打个tag,避免后续只知道这是最新的版本。

代码语言:javascript
复制
[root@server81 registry]# docker images | grep registry
docker.io/registry                          latest              2e2f252f3c88        2 months ago        33.3 MB
[root@server81 registry]# 
[root@server81 registry]# docker tag docker.io/registry:latest registry:2
[root@server81 registry]# 
[root@server81 registry]# docker images | grep registry
docker.io/registry                          latest              2e2f252f3c88        2 months ago        33.3 MB
registry                                    2                   2e2f252f3c88        2 months ago        33.3 MB
[root@server81 registry]# 

下面就是展示一下我编写好的启动脚本了。

register服务的docker启动脚本 restartRegistry.sh

代码语言:javascript
复制
[root@server81 registry]# vim restartRegistry.sh 

docker stop registry
docker rm registry
docker run -d -p 5000:5000 --name=registry --restart=always \
  --privileged=true \
  --log-driver=none \
  -v /root/registry/registrydata:/var/lib/registry \
  registry:2

执行启动一下:

代码语言:javascript
复制
[root@server81 registry]# ./restartRegistry.sh 
registry
registry
82a294241ff7ac05fd8084b1a2c380633bd570780fca5e766e5f3597e988507f
[root@server81 registry]# 
[root@server81 registry]# docker ps | grep registry
82a294241ff7        registry:2          "/entrypoint.sh /e..."   13 seconds ago      Up 13 seconds       0.0.0.0:5000->5000/tcp   registry
[root@server81 registry]# 

那么现在是否可以推送镜像了呢?

我们来测试一下推送镜像

首先需要给需要推送的镜像进行tag(打标签),格式: 服务器IP:5000/镜像名称:版本号 其中 服务器IP 是可以改为 域名 的,而 5000 则是 register 对外提供服务的端口号。 那么这里我就用kubernetes的pmd镜像来测试一下(随便一个镜像都可以,不用在意。)

代码语言:javascript
复制
[root@server81 registry]# docker tag k8s.gcr.io/pause-amd64:3.1 172.16.5.181:5000/pause-amd64:3.1
[root@server81 registry]# 
[root@server81 registry]# docker push 172.16.5.181:5000/pause-amd64:3.1
The push refers to a repository [172.16.5.181:5000/pause-amd64]
Get https://172.16.5.181:5000/v1/_ping: http: server gave HTTP response to HTTPS client
[root@server81 registry]# 

可以发现,docker push镜像到仓库的时候,报错了: Get https://172.16.5.181:5000/v1/_ping: http: server gave HTTP response to HTTPS client

这是因为http的仓库如果本地的docker没有配置非安全的指向是无法直接推送的。那么下来,我们来看看如何配置非安装访问docker仓库。

配置docker服务访问非安全docker仓库

代码语言:javascript
复制
## 在/etc/docker目录下,添加一个daemon.json文件,写上非安全访问的仓库IP:端口号
[root@server81 docker]# cat daemon.json
{"insecure-registries":["172.16.5.181:5000"]}
[root@server81 docker]# 
[root@server81 docker]# pwd
/etc/docker
[root@server81 docker]# 
## 重启docker服务
[root@server81 docker]# service docker restart
Redirecting to /bin/systemctl restart docker.service
[root@server81 docker]# 

再次推送测试一下

测试推送镜像,成功。

代码语言:javascript
复制
[root@server81 docker]# docker push 172.16.5.181:5000/pause-amd64:3.1
The push refers to a repository [172.16.5.181:5000/pause-amd64]
e17133b79956: Layer already exists 
3.1: digest: sha256:fcaff905397ba63fd376d0c3019f1f1cb6e7506131389edbcb3d22719f1ae54d size: 527
[root@server81 docker]# 

测试拉取镜像,成功。

代码语言:javascript
复制
[root@server81 docker]# docker pull 172.16.5.181:5000/pause-amd64:3.1
Trying to pull repository 172.16.5.181:5000/pause-amd64 ... 
3.1: Pulling from 172.16.5.181:5000/pause-amd64
Digest: sha256:fcaff905397ba63fd376d0c3019f1f1cb6e7506131389edbcb3d22719f1ae54d
Status: Image is up to date for 172.16.5.181:5000/pause-amd64:3.1
[root@server81 docker]# 

到了这里,基本上私有仓库已经部署好了。 那么,如何查看仓库里面已经有了哪些镜像呢?

查看仓库里面的镜像

代码语言:javascript
复制
[root@server81 registry]# curl http://localhost:5000/v2/_catalog
{"repositories":["calico/cni","calico/kube-controllers","calico/node","coredns","networkbox","pause-amd64","traefik"]}
[root@server81 registry]# 

使用curl的方式,就可以看到仓库里面,我已经推送了哪些镜像了。

好了,有了这个第一层次的部署方法,小伙伴就可以继续愉快地执行kubernetes的部署了,后续有时间,我会继续后面两个层次的部署说明的。

下一篇
举报
领券