为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Kubernetes

原创内容,转载请注明出处

前言

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

  • docker register 直接使用,IP + 5000 端口号,以 http 的形式访问

  • docker register 使用 haproxy 转发域名的方式,以 http 的形式访问

  • docker register 使用 haproxy 转发域名的方式,加上自签或者购买的ca证书,以 https 的形式访问

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

webp

目标

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

前置条件

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

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

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

首先拉取register的镜像

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

webp


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


[root@server81 registry]# docker search registry

webp

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

[root@server81 registry]# docker pull docker.io/registry

webp

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

webp


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

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

[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 MBregistry                                    2                   2e2f252f3c88        2 months ago        33.3 MB[root@server81 registry]#

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

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

webp

[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

执行启动一下:

[root@server81 registry]# ./restartRegistry.sh registry
registry82a294241ff7ac05fd8084b1a2c380633bd570780fca5e766e5f3597e988507f
[root@server81 registry]# [root@server81 registry]# docker ps | grep registry82a294241ff7        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镜像来测试一下(随便一个镜像都可以,不用在意。)

[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.1The 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仓库

## 在/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 restartRedirecting to /bin/systemctl restart docker.service
[root@server81 docker]#

再次推送测试一下

测试推送镜像,成功。

[root@server81 docker]# docker push 172.16.5.181:5000/pause-amd64:3.1The 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]#

测试拉取镜像,成功。

[root@server81 docker]# docker pull 172.16.5.181:5000/pause-amd64:3.1Trying 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]#

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

查看仓库里面的镜像

[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的部署了,后续有时间,我会继续后面两个层次的部署说明的。



作者:DevOps海洋的渔夫
链接:https://www.jianshu.com/p/6fc372d88275


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
45
获赞与收藏
144

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消