Docker--------registry安全认证搭建 [ Https ]

1. 背景

    docker中要使用镜像,一般会从本地、docker Hup公共仓库和其它第三方公共仓库中下载镜像,一般出于安全和外网(墙)资源下载速率的原因考虑企业级上不会轻易使用。那么有没有一种办法可以存储自己的镜像又有安全认证的仓库呢? ----> 企业级环境中搭建自己的安全认证私有仓库。

由于Docker1.3.X版本之后docker registry所采用https,前章节docker http部属最后docker push/pull会报错提示,需要做特殊处理。


2. 私有仓库有优势:

一、节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可;

二、提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。

3. 环境:

[[email protected] ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
[[email protected] ~]# uname -r
3.10.0-327.36.3.el7.x86_64
[[email protected] ~]# hostname
docker.lisea.cn

4. 服务器Ip地址

192.168.60.150

5. 搭建CA,实现加密传输

* 安装openssl相关包

[[email protected] ~]# yum install pcre pcre-devel zlib-devel openssl openssl-devel -y

* 切换工作路径至CA目录

[[email protected] ~]# cd /etc/pki/CA

* 生成根密钥

[ genrsa ] 为算法

[ private/cakey.pem ] 为密钥的生成的位置

[ 2048 ] 为密钥长度

[[email protected] CA]# openssl genrsa -out private/cakey.pem 2048

* 生成根证书,执行命令后依次要输入:国家代码(两个英文字母)、省份、城市、组织、单位、邮箱。

[[email protected] CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem

6. 为nginx生成密钥(在nginx服务器)

* 创建ssl目录

[[email protected] CA]# mkdir /etc/pki/CA/ssl

* 切换工作路径至SSL目录

[[email protected] CA]# cd /etc/pki/CA/ssl/

* 创建nginx密钥

  [ genrsa ] 为算法

 [ -out ] 指定输出文件名

 [ 2048 ] 为密钥长度

[[email protected] ssl]# openssl genrsa -out nginx.key 2048

* 为nginx生成证书签署请求[A challenge password与An optional company name 直接回车处理]

[[email protected] ssl]# openssl req -new -key nginx.key -out nginx.csr

* 私有CA根据请求来签发证书(在CA服务器即docker仓库服务器,需要将请求发送给CA)

[ 出现提示时,输入两次y ]

[[email protected] ssl]# touch /etc/pki/CA/index.txt
[[email protected] ssl]# touch /etc/pki/CA/serial
[[email protected] ssl]# echo "00" > /etc/pki/CA/serial
[[email protected] ssl]# openssl ca -in nginx.csr -out nginx.crt

7. 安装并配置nginx

* 安装 nginx

[[email protected] ssl]# yum install nginx -y

* 修改nginx.conf配置

    upstream registry {
        server 192.168.60.150:5000;
    }

    server {
        listen       443 ssl;
        server_name  docker.lisea.cn

        #ssl conf
        ssl on;
        ssl_certificate /etc/pki/CA/ssl/nginx.crt;
        ssl_certificate_key /etc/pki/CA/ssl/nginx.key;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        location / {
            proxy_pass http://registry;
            proxy_set_header Host $host;
            proxy_set_header X-Forward-FOr $remote_addr;
        }

    }

* 启动或重启nginx

[[email protected] nginx]# systemctl restart nginx

8. 安装并配置docker

* 安装docker

[[email protected] ~]# yum install docker -y

* 配置docker [ /etc/sysconfig/docker ] 添加内容至 DOCKER_OPTS

DOCKER_OPTS=" --insecure-registry docker.lisea.cn --tlsverify --tlscacert /etc/pki/CA/cacert.pem"

* 配置hosts

[[email protected] ~]# tail -1 /etc/hosts
192.168.60.150 docker.lisea.cn

* 启动docker

[[email protected] ~]# systemctl start docker

* 拉取 registry镜像,例如在daocloud.io/registry这个私有镜像仓库

[[email protected] ~]# docker pull daocloud.io/registry

* 创建本地镜像存储目录

[[email protected] ~]# mkdir /data/local_docker_registry -p

* 运行容器,

设置容器名称为local_docker_registry

挂在镜像内docker镜像仓库/var/lib/registry 至本地/data/local_docker_registry目录

端口映射出5000端口

 --restart=always让其跟随docker启动时启动

[[email protected] ~]# docker run --name local_docker_registry --restart=always -d -v /data/local_docker_registry:/var/lib/registry -p 5000:5000 daocloud.io/registry

9. 测试仓库是否可用

* curl 测试

[[email protected] ~]# curl -i -k https://docker.lisea.cn
HTTP/1.1 200 OK
Server: nginx/1.10.2
Date: Mon, 12 Jun 2017 21:58:57 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Connection: keep-alive
Cache-Control: no-cache

10. 客户机操作[ docker机 ]

* 拷贝ca证书并重命名

[[email protected]~]# scp [email protected]:/etc/kpi/CA/cacert.pem /etc/pki/tls/certs/ca-certificates.crt

* 创建仓库证书目录

[[email protected] ~]# mkdir /etc/docker/certs.d/docker.lisea.cn

* 复制证书并重命名至此仓库证书目录

[[email protected] ~]# cp /etc/pki/tls/certs/ca-certificates.crt /etc/docker/certs.d/docker.lisea.cn/ca.crt

* 配置hosts文件

[[email protected]~]# tail -1 /etc/hosts
192.168.60.150 docker.lisea.cn

* curl 测试

[[email protected] ~]# curl -i -k https://docker.lisea.cn
HTTP/1.1 200 OK
Server: nginx/1.10.2
Date: Mon, 12 Jun 2017 22:06:17 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Connection: keep-alive
Cache-Control: no-cache

* 注册账户

[[email protected] ~]# docker login -u lisea -p 123456 -e ‘[email protected]‘ https://docker.lisea.cn

* 登陆账户

[[email protected] ~]# docker login https://docker.lisea.cn
Username (lisea): lisea
Password: 
Login Succeeded

11. 总结

以需求驱动技术,技术本身没有优略之分,只有业务之分。

时间: 2024-07-31 06:56:01

Docker--------registry安全认证搭建 [ Https ]的相关文章

Docker--------Harbor registry安全认证搭建 [ Https ]

1. 背景  docker中要使用镜像,一般会从本地.docker Hup公共仓库和其它第三方公共仓库中下载镜像,一般出于安全和外网(墙)资源下载速率的原因考虑企业级上不会轻易使用.那么有没有一种办法可以存储自己的镜像又有安全认证的仓库呢? ----> 企业级环境中基于Harbor搭建自己的安全认证仓库. Harbor是VMware公司最近开源的企业级Docker Registry项目, 其目标是帮助用户迅速搭建一个企业级的Docker registry服务. 2. 选择的理由 * 提供了管理U

Docker 私有仓库 Harbor registry 安全认证搭建 [Https]

Harbor源码地址:https://github.com/vmware/harborHarbort特性:基于角色控制用户和仓库都是基于项目进行组织的, 而用户基于项目可以拥有不同的权限.基于镜像的复制策略镜像可以在多个 Harbor 实例之间进行复制.支持 LDAPHarbor 的用户授权可以使用已经存在 LDAP 用户.镜像删除 & 垃圾回收Image 可以被删除并且回收 Image 占用的空间.用户 UI用户可以轻松的浏览.搜索镜像仓库以及对项目进行管理.镜像删除 & 垃圾回收绝大部

Docker Registry v2 + Token Auth Server (Registry v2 认证)实例。

关于Registry 对于registry v1 --> v2中,其中的原理.优化等,这里不再做一一介绍.这里有篇文章我瞄过几眼应该是比较不错的介绍文章了:http://dockone.io/article/747 . Registry v2 token机制 官方document:https://docs.docker.com/registry/spec/auth/token/ 目前docker registry v2 认证分为以下6个步骤: 1. docker client 尝试到regist

搭建私服-docker registry

Docke官方提供了Docker Hub网站来作为一个公开的集中仓库.然而,本地访问Docker Hub速度往往很慢,并且很多时候我们需要一个本地的私有仓库只供网内使用.Docker仓库实际上提供两方面的功能,一个是镜像管理,一个是认证.前者主要由docker-registry项目来实现,通过http服务来上传下载:后者可以通过docker-index(闭源)项目或者利用现成认证方案(如nginx)实现http请求管理. 系统环境:CentOS 7.2主机IP:192.168.116.148 1

docker registry v2 nginx

Docker registry V2 nginx 搭建 一 环境 俩台centos 7 64位 Docker 版本 Client: Version:      1.8.2 API version:  1.20 Package Version: docker-1.8.2-7.el7.centos.x86_64 Go version:   go1.4.2 Git commit:   bb472f0/1.8.2 Built: OS/Arch:      linux/amd64 Server: Vers

docker私有仓库的搭建

Docker搭建本地私有仓库的详细步骤 Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库.使用私有仓库有许多优点:一.节省网络带宽,针对于每个镜像,不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可:二.提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用: 搭建私有仓库首先在136机器上下载registry镜像docker pull registry下载完之后我们通过该镜像启动一个容器docker run

Docker 使用指南 (二)—— 搭建本地仓库

版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/94 来源:腾云阁 https://www.qcloud.com/community 去中央仓库下载镜像有时候非常的慢,所以 docker 本地仓库和 gitlab 类似,都是为了便于公司内部人员的使用. 一.本地安装 本次实验环境:腾讯云服务器 CentOS 6.7 x86_64 # yum install -y python-devel libev

Docker私有仓库Registry认证搭建

前言: 首先,Docker Hub是一个很好的用于管理公共镜像的地方,我们可以在上面找到想要的镜像(Docker Hub的下载量已经达到数亿次):而且我们也可以把自己的镜像推送上去.但是,有的时候我们的使用场景需要拥有一个私有的镜像仓库用于管理自己的镜像,这个时候我们就通过Registry来实现此目的.本文详细介绍了本地镜像仓库Docker Registry及Auth Server认证搭建. 集群环境: 系统 主机名 IP地址(Host-Only) 描述 Centos7.2.1511 contr

在CentOS 6上搭建私有的Docker Registry

在CentOS 6上搭建私有的Docker Registry v2Registry概念Registry是一个无状态的, 高可扩展的服务器端应用程序, 用于存储和分发Docker Image.依赖安装1. 安装Docker要使用Docker Registry, 当然首先要安装Docker. 假设你已经安装好Docker. 没有安装好可以参考官方文档.2. 安装Docker-composeDocker-compose是一个非常有用的Docker运行, 管理的工具. 你可以通过定义compose文件,