准备

  1. 基本事项
  2. Docker环境
  3. 登录授权方式
  4. 镜像存放地址
  5. HTTPS外网访问
  6. 启动Docker Registry

1. 基本事项

本篇涉及到的数据文件都放在/data目录下, 其中会有三个子目录

/data/auth/ 基本的用户名密码认证文件存放地址

/data/certs/ docker registry 镜像https访问射击到的证书与密钥的存放地址

/data/registry/ docker registry镜像的存放地址, 当push镜像到镜像服务器之后,镜像就是存放在这里

2. Docker环境

docker的安装,全称参考官网介绍: https://docs.docker.com/engine/installation/linux/docker-ce/debian/#install-docker-ce

3. Registry登录认证

Registry Server的登录认证有多种方式,这里我们使用常规情况下的一种认证,基本的用户名密码认证,这种认证方式也跟nginx的基本http认证相同, 使用一个htpasswd文件来存放认证的用户名跟密码, 这个文件的操作是通过htpasswd这个命令来添加与管理用户密码的.

如果系统中没有这个命令,可通过下面命令安装

apt-get install apache2-utils

通过htpasswd命令生成用户管理文件并添加一个用户

htpasswd -cBb auth/htpasswd <username> <password>

往现有的文件里面添加一个用户

htpasswd -Bb auth/htpasswd <username> <password>

4. 镜像存放地址

通常正式环境我们的镜像会存储在外部,而不是在docker container里面, 所以我们需要在外部准备一个目录,在启动registry镜像的时候,通过-v 参数映射到container内部, 此教程里面的目录是/data/registry/

5. HTTPS外网访问

外网访问必须要用https, 主要是涉及到证书的问题, 通常我们可以使用自签名证书,

我们分docker register server端跟 docker pull 客户端两部分来讲

server端不涉及根证书添加到信任区域问题,

client端要访问自签名证书的服务器,必须添加根证书到client的信任区

BUT: 当docker register server需要pull/push镜像的时候,就需要把根证书添加到信任区, 这里有个原则,就是哪里需要pull/push镜像,那台机器就需要添加根证书

添加自签名根证书到linux信任区(Debian, 适用于Ubuntu)

这个步骤只需要用到docker pull的机器上做, docker registry server非必须

证书存放区域: /usr/share/ca-certificates/

Copy证书到证书存放地址:

wget http://agilelabs.net/certifications/publicauthorities/agilelabs_root_ca.pem/ –O /usr/share/ca-certificates/agilelabs_root_ca.crt

重新加载新添加的跟证书:

dpkg-reconfigure ca-certificates

选择YES=>通过”空格”键选择刚添加的根证书=> Tab到底部的OK=>回车选择

添加新的根证书之后需要重启Docker,让 Docker能识别新的证书

service docker restart

6. 启动Docker Registry

mkdir -p /data/registry \

mkdir -p /data/auth \

mkdir -p /data/certs

docker run -d \

--restart=always \

--name registry \

-v /data/registry:/var/lib/registry \

-v /data/auth:/auth \

-e "REGISTRY_AUTH=htpasswd" \

-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \

-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \

-v /data/certs:/certs \

-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \

-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.niusys.com.crt \

-e REGISTRY_HTTP_TLS_KEY=/certs/niusys.key \

-p 443:443 \

registry:2

以上算是对这段时间研究Docker以来,搭建Registry的总结。

自签名证书的部分可以通过 http://agilelabs.net 非常方便的生成与下载.

无论是密钥还是证书都可以通过右键复制链接, 在Linux里面通过 wget http://agilelabs.net/下载地址 –O 要保存的文件名

比如下载根证书并存储到/usr/share/ca-certificates目录下的agilelabs_root_ca.crt文件: wget http://agilelabs.net/certifications/publicauthorities/agilelabs_root_ca.pem/ –O /usr/share/ca-certificates/agilelabs_root_ca.crt

Docker Register安装与基本认证的更多相关文章

  1. Docker Register部署与基本认证

    准备 基本事项 Docker环境 登录授权方式 镜像存放地址 HTTPS外网访问 启动Docker Registry 1. 基本事项 本篇涉及到的数据文件都放在/data目录下, 其中会有三个子目录 ...

  2. docker的安装和基础使用

    Docker EE/Docker CE简介与版本规划 版本区别 Docker EE Docker EE由公司支持,可在经过认证的操作系统和云提供商中使用,并可运行来自Docker Store的.经过认 ...

  3. docker+redis安装与配置,主从+哨兵模式

    docker+redis安装与配置 docker安装redis并且使用redis挂载的配置启动 1.拉取镜像 docker pull redis:3.2 2.准备准备挂载的目录和配置文件 首先在/do ...

  4. Docker开启远程连接,本地IDEA使用docker插件连接(不认证的版本和认证的版本都有)

    前言 在学校学习的时候,要部署一个Java程序,一般是打成war包,放到服务器上的tomcat的webapp里面去: 后来SpringBoot出现内置了tomcat,就直接打成jar包,丢到服务器任何 ...

  5. Docker上安装Redis

    Docker可以很方便的进行服务部署和管理,下面我们通过docker来搭建Redis的单机模式.Redis主从复制.Redis哨兵模式.Redis-Cluster模式 一.在Docker上安装单机版R ...

  6. Docker开启TLS和CA认证

    前言:Docker直接开启2375端口是不安全的,别人只要连上之后就可以任意操作,下面是开启Docker的TLS和CA认证方法,并使用Jenkins和Portainer连接. 一.生成证书 查看服务器 ...

  7. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  8. docker 启动安装等命令

    确认是否安装url whereis curl 启动docker服务: sudo service docker start sudo service docker stop 安装curl sudo ap ...

  9. DOCKER windows安装

    DOCKER windows安装 1.下载程序包 2. 设置环境变量 3. 启动DOCKERT 4. 分析start.sh 5. 利用SSH工具管理 6. 下载镜像 6.1 下载地址 6.2 用FTP ...

随机推荐

  1. java 虚拟机与并发处理几个问题简要(二)

    六.两个重要的概念性问题: 1.同步:要保持数据的一致性,就需要一种保证并发进程正确执行顺序的机制.这种机制就是 进程同步(Process Synchronization). 竞争资源的多个进程按着特 ...

  2. 有趣的flash例子

    仓鼠 <object type="application/x-shockwave-flash" data="http://cdn.abowman.com/widge ...

  3. Kindeditor JS 取值问题以及上传图片后回调等

    KindEditor.ready(function (K) { var editor = K.create('#editor_id', { //上传管理 uploadJson: '/js/kinded ...

  4. HTTP错误代码大全

    HTTP出错大全 101 - Switching Protocols Top Success Codes 200 - OK201 - Created202 - Accepted203 - Non-Au ...

  5. MIRO做发票校验时实现替代功能的多种方式

    http://blog.sina.com.cn/s/blog_3f2c03e30100ngje.html MIRO做发票校验时,如果需要对产生的会计凭证做某些字段的替代,可有多种方法. 1.GGB1替 ...

  6. 吾八哥学Python(五):Python基本数学运算

    今天我们学习Python里的基本数学运算方法,还是通过例子来练习吧! 加减乘除求余 #加法 print(12+34) #减法 print(30-10.0) #乘法 print(3*5) #除法 pri ...

  7. (@WhiteTaken)设计模式学习——享元模式

    继续学习享元模式... 乍一看到享元的名字,一头雾水,学习了以后才觉得,这个名字确实比较适合这个模式. 享元,即共享对象的意思. 举个例子,如果制作一个五子棋的游戏,如果每次落子都实例化一个对象的话, ...

  8. bzoj1812 [Ioi2005]riv

    riv 几乎整个Byteland王国都被森林和河流所覆盖.小点的河汇聚到一起,形成了稍大点的河.就这样,所有的河水都汇聚并流进了一条大河,最后这条大河流进了大海.这条大河的入海口处有一个村庄--名叫B ...

  9. Linux计划任务-at命令

    第一部分:at命令   1. at命令:在一个指定的时间执行一个指定任务,只能执行一次,且需要开启atd进程(ps -ef | grep atd查看, 开启用/etc/init.d/atd start ...

  10. angularJS的一点小笔记

    AngularJS用法:-------------------------------------------------- AngularJS 指令: AngularJS 通过被称为 指令 的新属性 ...