码迷,mamicode.com
首页 > Web开发 > 详细

docker实战之搭建私有镜像仓库 - kurbernetes

时间:2018-03-31 14:15:54      阅读:507      评论:0      收藏:0      [点我收藏+]

标签:uri   star   host   方式   注意   tag   javascrip   第三方   rip   

1、实战目的

搭建企业私有的镜像仓库,满足从开发环境推送和拉取镜像。当我们使用k8s来编排和调度容器时,操作的基本单位是镜像,所以需要从仓库去拉取镜像到当前的工作节点。本来使用公共的docker hub完全可以满足我们的需求,也非常方便,但是上传的镜像任何人都可以访问,其次docker hub的私有仓库又是收费的,所以从安全和商业两方面考虑,企业必须搭建自己的私有镜像仓库。

2、搭建私有仓库

2.1、生产证书

为了保证镜像传输安全,从开发环境向私有仓库推送和拉取镜像时,一般使用https的方式(备注:对于普通的http方式请大家参考官方文档:https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry 自己下去实战。),所以我们需要提供一个可信任的、知名的SSL/TLS证书,可以向知名的第三方证书颁发机构购买证书,也可以使用Let’s Encrypt生产免费的证书,还可以自己生产一个自签名证书。
由于没有购买真实的域名,无法和第三方证书颁发机构进行交互性验证,所以决定自己生产一个自签名证书,添加到私有仓库,然后让docker客户端信任此证书。
创建一个用于存储证书和私钥的目录certs

  $ mkdir -p certs

生产证书和私钥

$ openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key -x509 -days 365 -out certs/domain.crt 

注意提前准备好域名,并将其作为CN,整个过程如图所示:
技术分享图片
查看生成证书:
技术分享图片

2.2、运行容器,启动镜像仓库

使用docker开源的Registry:2镜像,如图:
技术分享图片
执行下面命令:

$ docker run -d   --restart=always   --name <registry-host>   -v `pwd`/certs:/certs   -e REGISTRY_HTTP_ADDR=0.0.0.0:443   -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt   -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key   -p 443:443   registry:2
参数 说明
-d 后台静默运行容器。
-restart 设置容器重启策略。
-name 命名容器。
-v 挂载host的certs/目录到容器的/certs/目录。
-e REGISTRY_HTTP_ADDR 设置仓库主机地址格式。
-e REGISTRY_HTTP_TLS_CERTIFICATE 设置环境变量告诉容器证书的位置。
-e REGISTRY_HTTP_TLS_KEY 设置环境变量告诉容器私钥的位置。
-p 将容器的 443 端口映射到Host的 443 端口。

如图所示:
技术分享图片

2.3、重命名镜像

镜像的完整命名格式:[registry-host]:[port]/[username]/[imagename],当我们使用docker push的时候,docker会自动识别[registry-host]部分为容器镜像仓库地址。
使用docker tag重命名镜像:

docker tag justmine/healthchecksapi:v1.0 [registry-host]/justmine/healthchecksapi:v1.0

技术分享图片

2.4 推送镜像到私有仓库

docker push [registry-host]/justmine/healthchecksapi:v1.0

技术分享图片
注意:为了让当前Windows主机上运行的docker信任此证书,我们需要在Windows主机上安装此证书,右键点击【安装证书】,选择【本地主机】,选择【受信任的根证书】,添加证书即可。同时将域名与私有仓库主机ip的映射关系写入到Windows主机的hosts文件。

从开发环境成功推送镜像到私有仓库!!!大功告成!!!
到目前为止,能够满足企业需求的私有仓库正式搭建完成。

下一篇,我们将实战k8s使用我们的私有仓库拉取镜像
源码参考:https://github.com/justmine66/k8s.ecoysystem.apps

docker实战之搭建私有镜像仓库 - kurbernetes

标签:uri   star   host   方式   注意   tag   javascrip   第三方   rip   

原文地址:https://www.cnblogs.com/justmine/p/8666907.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!