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

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

2、搭建私有仓库 2.1、生产证书

为了保证镜像传输安全,从开发环境向私有仓库推送和拉取镜像时,一般使用https的方式(备注:对于普通的http方式请大家参考官方文档: 自己下去实战。),所以我们需要提供一个可信任的、知名的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

注意提前想好域名(如:registry.wuling.com),并将其作为CN,整个过程如图所示:

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


查看生成证书:

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

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

使用docker开源的Registry:2镜像,如图:

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


执行下面命令:

$ docker run -d \ --restart=always \ --name registry.wuling.com \ -v `pwd`/certs:/certs \ -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \ -e REGISTRY_HTTP_TLS_CERTIFICATE=http://www.likecs.com/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=http://www.likecs.com/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 端口。  

如图所示:

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


丛上图可以看到,服务端私有仓库已经正常运行起来了!!!

3、实战(从服务器和开发环境分别推送和拉取镜像) 3.1 服务器(私有仓库所在主机) 3.1.1、下载并重命名镜像

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

docker pull justmine/helloworldapi:v2.2 docker tag justmine/helloworldapi:v2.2 registry.wuling.com/justmine/helloworldapi:v2.2

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

3.1.2、推送镜像到私有仓库

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


什么情况?哦哦哦!!!域名是我们杜撰的,需要将与IP映射关系写入hosts文件。

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


再次推送,如下:

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyswgg.html