前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker register 私有仓库部署 - http模式

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

作者头像
Devops海洋的渔夫
发布2019-06-02 14:00:04
5.6K0
发布2019-06-02 14:00:04
举报
文章被收录于专栏:Devops专栏

前言

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.12.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 目标
  • 前置条件
  • 目标:下载register镜像以及推送kubernetes的pmd镜像
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档