首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(WJW)构建企业级Docker_Registry_V2

(WJW)构建企业级Docker_Registry_V2

作者头像
白石
发布2019-08-23 10:27:26
3920
发布2019-08-23 10:27:26
举报
文章被收录于专栏:白石白石白石

(WJW)构建企业级Docker_Registry_V2

目前Docker Registry版本是2.2,也是当前最新的版本. Registry2.2的特性有,目前是用go语言去写的,性能提升比v1能高2-3倍,安全和性能上有很多的提升,那么v1有哪些安全隐患呢? v1版本,镜像的id是随机生成的,所以每次构建一个层都会随机生成一个新ID,即使是层的内容相同.这样会有一个风险就是层的内容文件会被串改,因为最终验证的是id,而不是里面的内容. v2版本,镜像ID是通过sha256做hash得出来的,这样一来同样的内容就会得到的是一样的ID.镜像id这点能保证了,但还是有其他的问题.细心的同学会发现运行 docker pull 镜像下载完后,会看到 Digest 字段,看起来docker像是想用此字符来取代 tag .只是猜测不知道后续会发展成什么一样.

创建Registry2 Server端

说明:

reg2.youyuan.cn 这是docker registry2服务器的域名也就是你的公司docker私有服务器的主机地址,假定ip是192.168.68.17;因为https的SSL证书不能用IP地址,我就随便起了个名字。

registry:2.2 服务器作为上游服务器处理docker镜像的最终上传和下载,用的是官方的镜像。

  1. 下载registry2.2镜像
docker pull registry:2.2
  1. 生成自签名证书,如果是购买的证书就不用了,直接用购买的证书即可.假如域名是:reg2.youyuan.cn 创建目录:
mkdir /opt/registry2
cd /opt/registry2
mkdir certs
cd certs
openssl req -x509 -days 3650 -subj '/CN=reg2.youyuan.cn/' -nodes -newkey rsa:2048 -keyout registry2.key -out registry2.crt
  1. 生成用户和密码
cd ..
mkdir auth
docker run --rm --entrypoint htpasswd registry:2.2 -Bbn docker docker > auth/htpasswd

用户:docker 密码:docker 可随便填写自己想填写的.

  1. 启动Registry2 Server
docker run --restart=always -d \
-e REGISTRY_AUTH=htpasswd \
-e REGISTRY_AUTH_HTPASSWD_REALM=Registry2_Realm \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry2.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/registry2.key \
-v /opt/registry2/auth:/auth \
-v /opt/registry2/certs:/certs \
-v /opt/registry2/registry:/var/lib/registry \
-p 5000:5000 \
--name=registry2 registry:2.2

确认Registry2 Server是 UP 状态, docker ps -a | grep registry2

配置Docker client端

同Registry2 Server在同一台服务器上配置:

  1. 创建证书目录(没有此目录自己创建,注意端口号)
mkdir -p /etc/docker/certs.d/reg2.youyuan.cn:5000
  1. 下载证书
cp /opt/registry2/certs/registry2.crt /etc/docker/certs.d/reg2.youyuan.cn:5000
  1. 域名解析,如果有DNS解析无需做此步骤(registry2-server-ip=192.168.68.17)
echo "192.168.68.17 reg2.youyuan.cn" >> /etc/hosts

其他主机配置:

  1. 创建证书目录(没有此目录自己创建,注意端口号)
mkdir -p /etc/docker/certs.d/reg2.youyuan.cn:5000
  1. 域名解析,如果有DNS解析无需做此步骤(registry2-server-ip=192.168.68.17)
echo "192.168.68.17 reg2.youyuan.cn" >> /etc/hosts
  1. 下载证书
scp -r root@reg2.youyuan.cn:/opt/registry2/certs/registry2.crt /etc/docker/certs.d/reg2.youyuan.cn:5000

验证测试

  1. 登陆(注意加端口号)
docker login reg2.youyuan.cn:5000
  1. 输入用户docker,密码docker以及邮箱docker@gmail.com

或者: docker login -u docker -p docker -e "docker@gmail.com" https://reg2.youyuan.cn:5000

  1. 更改镜像tag
docker tag busybox reg2.youyuan.cn:5000/busybox:1.0
  1. push 镜像
docker push reg2.youyuan.cn:5000/busybox:1.0
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (WJW)构建企业级Docker_Registry_V2
    • 创建Registry2 Server端
      • 配置Docker client端
        • 同Registry2 Server在同一台服务器上配置:
        • 其他主机配置:
      • 验证测试
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档