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

Docker(三):Docker仓库配置的更多相关文章

  1. Docker(三)-Docker中Image、Container与Volume的迁移

    Image 镜像的迁移,适用于离线环境. 一般离线环境,都会自建Docker Registry. 无论 官方的 ,还是最近流行的 Harbor ,都是不错的选择. 但是,这个世界上就是有些环境,或者说 ...

  2. Nexus OSS 3 搭建并配置使用 Docker & Git LFS 仓库

    转载自:https://cloud.tencent.com/developer/article/1010590 1.Nexus OSS 3 介绍 我们知道 Nexus 是一个强大的 Maven 仓库管 ...

  3. npm私有仓库 配置verdaccio在docker环境

    前端开发过程中,少不了自己封装一些通用的包,但又不想放在公共的平台,所以搭建一个npm私有的仓库是很有必要的. 在这里简单介绍如何使用 verdoccio 在docker环境下的配置.verdocci ...

  4. Docker搭建镜像仓库和配置缓冲地点

    Docker搭建镜像仓库和配置缓冲地点 参考网址:https://docs.docker.com/engine/reference/commandline/dockerd/#options 一.配置D ...

  5. docker registry 私有仓库 安装配置、查询、删除

    #++++++++++++++++++++++++++++++ #docker-registry 私有仓库 #搜索,下载register镜像 docker search registry docker ...

  6. docker(三):Harbor 1.8.0 仓库的安装和使用

    回顾: docker(一):docker是什么? docker(二):CentOS安装docker docker(部署常见应用):docker部署mysql 安装的先决条件 硬件环境 1.CPU    ...

  7. 配置docker的私有仓库

    1:安装docker-registry包 yum install -y docker-distribution   2:启动docker-distribution,默认监听于TCP/5000端口 sy ...

  8. 使用Nexus3构建Docker私有镜像仓库

    一.安装Nexus3 Nexus3是Sonatype提供的仓库管理平台,Nuexus Repository OSS3能够支持Maven.npm.Docker.YUM.Helm等格式数据的存储和发布:并 ...

  9. Docker 从入门到实践(二)Docker 三个基本概念

    一.Docker 的三个进本概念? 了解 Docker 的三个基本概念,就可以大致了解 Docker 的生命周期. 镜像(Image) 容器(Container) 仓库(Repository) 二.镜 ...

  10. docker 4 docker的三要素

    docker三要素 镜像,容器,仓库 镜像 docker镜像(image)就是一个只读的模板,镜像可以用来创建docker容器,一个镜像可以创建很多个容器 容器 docker利用容器(containe ...

随机推荐

  1. RFID电动自行车与共享单车之物联网比较

    目前比较热门的RFID电动自行车管理和共享单车,都是属于物联网范畴.它们之间有什么不同呢? 1.RFID电动自行车管理系统原理 RFID电动自行车管理,利用了有源RFID技术,使用基站SR8读取安装在 ...

  2. 为什么win记事本编辑的shell在linux中运行会报错

    结论:win记事本使用的格式有别于linux,二者不可混用.linux使用一个叫vi的编辑器. 解决办法:使用vi命令建立文件,在其中敲shell.命令:vi  > filename   (敲完 ...

  3. 逆向实用干货分享,Hook技术第二讲,之虚表HOOK

    逆向实用干货分享,Hook技术第二讲,之虚表HOOK 正好昨天讲到认识C++中虚表指针,以及虚表位置在反汇编中的表达方式,这里就说一下我们的新技术,虚表HOOK 昨天的博客链接: http://www ...

  4. CCF-201409-1-相邻数对

    问题描述 试题编号: 201409-1 试题名称: 相邻数对 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1. ...

  5. Codeforces 438D The Child and Sequence

    题意:给定一个n个数的序列,完成以下3个操作: 1.给定区间求和 2.给定区间对x取模 3.单点修改 对一个数取模,这个数至少折半.于是我们记一个最大值max,如果x>max则不做处理. #in ...

  6. ansible批量管理软件部署及剧本

    服务器版本信息: Centos6.9 [root@db02 ~]# uname -a Linux db02 -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_6 ...

  7. PHP curl_setopt函数用法介绍

    [导读] curl_setopt函数是php中一个重要的函数,它可以模仿用户的一些行为,如模仿用户登录,注册等等一些用户可操作的行为哦.bool curl_setopt (int ch, string ...

  8. Esri:为Web GIS注入新内涵

    纵观近些年IT与空间技术的发展,云计算.大数据.实时信息.LBS.无人机.倾斜摄影等新技术层出不穷:互联网基础设施建设成绩瞩目,宽带成为国家战略性公共基础设施. GIS(地理信息系统)作为空间信息分析 ...

  9. 在Azure Container Service创建Kubernetes(k8s)群集运行ASP.NET Core跨平台应用程序

    引子 在此前的一篇文章中,我介绍了如何在本地docker环境中运行ASP.NET Core跨平台应用程序(http://www.cnblogs.com/chenxizhang/p/7148657.ht ...

  10. C#基础知识 简单说明泛型的优点

    有关泛型的优缺点在网上有很多篇文章,也足以说明问题,我就不去复制粘贴了(而且内容有些多),由于记性不太好,所以自己做个简单明了的总结. 泛型的优点主要有两个: "性能" " ...