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. C语言中静态申请内存遇到的错误分析

    今天调试代码中,遇到了一个比较奇怪的打印,dump出来的数据只有前四位有值,其他后面的都为零. 出于直觉,应该是内存没有申请到.仔细核对代码之后,果真发现了一个语法错误,就是使用指针的指针时 ,对申请 ...

  2. Error when sending message to topic test with key: null, value: 2 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)

    windows下使用kafka遇到这个问题: Error when sending message to topic test with key: null, value: 2 bytes with ...

  3. html5本地存储数据,实现自动登录功能

    背景: 在项目中遇到一个需求:用户登录完之后,网站自动保存用户id存储在本地,在下次打开网页时,通过id判断是否要进行登录操作. 技术方案: 在HTML5中,本地存储是一个window的属性,包括lo ...

  4. “核弹级”Android漏洞Janus,黑客可以任意篡改App

    美国时间12月9日,Google披露了一个名为"Janus"安卓漏洞.该漏洞可以让攻击者绕过安卓签名机制,从而让攻击者对App进行篡改,安卓5.0到8.0等个版本系统均受影响. 顶 ...

  5. Scala入门系列(五):面向对象之类

    定义类 // 定义类,包含field以及method class HelloWorld { private var name = "Leo" def sayHello() { pr ...

  6. CCF-201604-1-折点计数

    问题描述 试题编号: 201604-1 试题名称: 折点计数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个整数表示一个商店连续n天的销售量.如果某天之前销售量在增长 ...

  7. [设计模式]PHP设计模式之单例模式

    面试最常见的问题之一就是  请问您知道哪些设计模式这次先介绍最经典的单例模式.单例模式分3种:懒汉式单例.饿汉式单例.登记式单例.单例模式有以下3个特点:1.只能有一个实例.2.必须自行创建这个实例. ...

  8. Qt---自定义界面之QStyle

    最近想学习下Qt的自定义界面,因此花了点时间看了下QStyle,,,,结果很难受,这一块涉及到一大块GUI的具体实现方式,看得我很头疼.想看第一手资料并且英语功底不错的可以直接上qt文档,下面我会以易 ...

  9. Solr管理界面详解

  10. 用shell制作IP脚本

    vim  ip.sh #!/bin/bashread -p "eth:" eread -p "ip:" ip1read -p "netmask:&qu ...