Docker(三):Docker仓库配置 - 杜先生的博客

dukuan 2021-08-16 原文


Docker(三):Docker仓库配置


1、仓库介绍

  仓库(repository)用来集中管理Docker镜像,支持镜像分发和更新。

  目前世界上最大最知名的公共仓库是Docker官方的Docker Hub,国内比较知名的有:Docker Pool、阿里云仓库等。

 

2、镜像仓库

  仓库下面包含着一组镜像,镜像之间用标签(tag)区分,一个完整的镜像路径通常由服务器地址、仓库名称和标签组成,如:

  registry.hub.docker.com/official/ubuntu:14.04

  2.1 上传镜像

    docker push localhost:5000/official/ubuntu:14.04

    上述命令是向本地仓库上传镜像,如果不写仓库地址默认想docker官方仓库上传镜像,向官方仓库上传镜像需要登录账户,上传的目标是自己的仓库。

  2.2 下载镜像

    docker pull ubuntu:14.04

    不加tag默认下载所有ubuntu仓库下的官方镜像。

  2.3 查询镜像

    docker search localhost:5000/ubuntu    #仓库开发者需要实现查询功能

    

3、构建私有仓库

  Docker私有服务(private registry)用来建设私有仓库,部署私有仓库的优点:

    可独立开发和运维私有仓库;

    节省带宽资源

    有独立的账户管理系统

    增加了定制化功能

  搭建私有仓库之前要部署Docker Private Registry,命令如下:

    docker run -d –hostname localhost –name registry-v2 \

    -v /opt/data/distribution:/var/lib/registry/docker/registry/v2 \

    -p 5000:5000 registry:2.0

    上面运行一个名为registry-v2的服务,-v把本地目录mount到容器内的镜像目录,方便开发者查看和管理本地镜像数据。

    上传下载镜像:

      docker push/pull localhost:5000/official/ubuntu:14.04

      由于暴露的5000端口,能访问该主机的用户都可以通过5000端口上传或下载镜像

 

4、构建反向代理

  在实际使用中,暴露主机端口是不安全的,一般设计私有仓库时会加上https反向代理。

  假设私有仓库的地址:https://my.docker.io,利用opendns组织下的nginx-auth-proxy开源项目实现反向代理功能。

  开源项目地址:https://github.com/opendns/nginx-auth-proxy

  实现反向代理需要生成服务器的一对密钥和根证书,利用OpenSSL生成自签名证书命令如下:

    生成私钥文件server.key:openssl genrsa -out server.key 2048

    生成根证书文件server.pem:openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 3650 \

    -out server.pem -subj “/C=CN/ST=state/L=city/O=Your Company Name/OU=localhost”

    将pem证书转换成crt证书,放到系统证书目录(用户访问registry之前需要做这一步):

      cat server.pem | sudo tee -a /etc/ssl/certs/server.crt

    nginx把生成的证书通过Dockerfile加载到镜像中:

      ADD server.crt /etc/ssl/certs/docker-registry

      ADD server.key /etc/ssl/private/docker-registry

    配置nginx支持ssl功能

      ssl;

      ssl_certificate  /etc/ssl/certs/docker-registry;

      ssl_certificate  /etc/ssl/private/docker-registry

    配置用户验证文件

      auth_basic_user_file <htpasswd file name>

    运行nginx容器,启动代理功能

      docker run -d –hostname my.docker.io –name nginx –link registry:registry -p 443:443 nginx

    nginx配置反代到registry

      proxy_pass http://registry:5000;

    请求头配置

      proxy_set_header  Host  $http_host;

      proxy_set_header  X-Real-IP  $remote_addr;

      proxy_set_header  Authorization  ””;

      proxy_set_header  Accept-Encoding  ””;

      proxy_set_header  X-Forwarded-By  $Server_addr:$server_port;

      proxy_set_header  X-Forwarded-For  $remote_addr;  

     资源访问配置

      不需要鉴权

        location /v2/ {

          auth_basic off;

          proxy_pass  http://docker-registry;

        }

      需要鉴权

        location /auth/{

          auth_basic  ”Resticted”;

          auth_basic_user_file  passwd;

          proxy_pass  http://docker-registry;

        } 

    上传私有镜像到registry,必须先登录

      docker login -u <usernam> -p <password> -e <email> my.registry.io

发表于
2017-09-14 23:06 
杜先生的博客 
阅读(6971
评论(0
编辑 
收藏 
举报

 

版权声明:本文为dukuan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/dukuan/p/7523782.html

Docker(三):Docker仓库配置 - 杜先生的博客的更多相关文章

  1. 微信小程序添加H5外链的小坑们 – Mr_147

    微信小程序添加H5外链的小坑们 微信小程序添加H5外链的小坑们 需要用Three.js来将全息体积视频在小程序 […]...

  2. Android开发者掘金(3) — 未来 – 老菜_

    Android开发者掘金(3) — 未来 之前两篇文章分别对国内外移动广告平台和如何看明白广告收入 […]...

  3. webOS Isis 开源 — LinuxTOY

    webOS Isis 开源 — LinuxTOY LwebOS Isis 开源 2012-02-15 黑日白月 […]...

  4. GStreamer基础教程13 – 调试Pipeline

    摘要   在很多情况下,我们需要对GStreamer创建的Pipeline进行调试,来了解其运行机制以解决所遇 […]...

  5. DDD:订单管理 之 如何组织代码 – 幸福框架

    DDD:订单管理 之 如何组织代码 背景 系统开发最难的是职责的合理分配,或者叫:“如何合理的组织代码”,今天 […]...

  6. AI资源对接需求汇总:第3期 – 计算机视觉life

    AI资源对接需求汇总:第3期 2019-08-29 18:13  计算机视觉life  阅读(511)  评论 […]...

  7. Lombok 注解简介 – 竺旭东

    Lombok 注解简介 Lombok @AllArgsConstructor /** * 生成一个包含所有属性 […]...

  8. [转]ERP、OA、MIS、CRM、BI等等都是什么 – redcoatjk

    ERP、OA、MIS、CRM、BI等等都是什么 引用:http://www.zuoyefeng.com/htm […]...

随机推荐

  1. MyBatis和Spring整合的奥秘

    本篇博客源码分析基于Spring 5.1.16.RELEASE,mybatis-spring 2.0.0,较高 […]...

  2. Memcache介绍

    Memcached介绍 Memcached是一款开源的、高性能的纯内存缓存服务软件。Mem是内存的意思,cac […]...

  3. 基于html5 plus + Mui 移动App开发(一)

    基于html5 plus + Mui 移动App开发(一) Posted on 2018-09-04 21:0 […]...

  4. Google浏览器Chrome安装失败,错误代码0xa0430721解决办法

    有时,当您安装谷歌浏览器时会出现无法安装的错误,通常是由于您以前安装过谷歌浏览器,但其注册表仍然残留,此时,您 […]...

  5. lucene

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text […]...

  6. 【转载】 2020年的算法实习岗位信息表,部分包括内推码,和常见深度学习算法岗面试题及答案 – Hello_BeautifulWorld

    【转载】 2020年的算法实习岗位信息表,部分包括内推码,和常见深度学习算法岗面试题及答案 原文地址: htt […]...

  7. 三次握手协议

    前端面试题 说说三次握手协议 答:第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入sy […]...

  8. AutoCAD中套合矢量图和高清卫星地图教程 – bigemap4

    AutoCAD中套合矢量图和高清卫星地图教程   BIGEMAP无偏移影像叠加配准(Auto CAD版) 第一 […]...

展开目录

目录导航