您的位置:首页 > 运维架构 > Docker

创建docker私有仓库

2017-05-13 16:30 309 查看
拓扑环境(做一个安全上传下载的docker私有仓库)



整体思路:

搭建DNS服务器(本文档只做修改hosts文件操作)

安装代理服务器并根据环境配置好文件

建立CA服务器,并在代理服务器和客户端上做证书验证

在docker client做配置,完成

搭建DNS服务器(本文档只做修改hosts文件操作)

在registry server中修改好主机名

vim /etc/hostname

docker.test.com

vim /etc/hosts //在registry server和Docker client都做好

192.168.1.1 docker.test.com

搭建Nginx代理服务器

yum -y install pcer-devel zlib-devel
groupadd nginx
useradd -s /sbin/nologin nginx -g nginx
tar xzf nginx-*.tar.gz -C /usr/src
cd /usr/src/nginx-*
--user=nginx         //设定程序运行的用户环境
--group=nginx        //设定程序运行的组环境
--prefix=PATH        //设定安装目录
--with-pcre          //启用pcre库,Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式
--with-http_stub_status_module      //是为了启用 nginx 的 NginxStatus 功能,用来监控 Nginx 的当前状态
--with-http_ssl_module              //开启SSL模块,支持使用HTTPS协议的网页
--with-http_realip_module           //开启Real IP的支持,该模块用于从客户请求的头数据中读取Real Ip地址
--with-http_addition_module         //开启Addtion模块,该模块允许你追加或前置数据到相应的主体部分
--with-http_flv_module              //为Flash Video(FLV)文件 提供服务端伪流媒体支持
make && make install


编辑Nginx配置文件

# vi /opt/nginx/conf/nginx.conf
user nginx;
worker_processes 4;
events {
worker_connections 4096;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream registry {
server 192.168.1.2:5000;
}
server {
listen 443 ssl;
server_name docker.test.com;
ssl_certificate /usr/local/nginx/ssl/nginx.crt;
ssl_certificate_key /usr/local/nginx/ssl/nginx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://registry; client_max_body_size 3000m;
proxy_set_header Host $host;
proxy_set_header X-Forward-For $remote_addr;
}
}
}


搭建CA服务器

yum -y install openssl openssl-devel

1.生成根秘钥:

openssl genrsa -out private/cakey.pem 2048

2.做自签证书

openssl req -new -x509 /etc/pki/CA/private/cakey.pem -out /etc/CA/cacert.pem

根据提示内容填写信息



3.初始化工作环境

touch /etc/pki/CA/{index.txt,serial}
echo 01 > /etc/pki/CA/serial        //输入一个编号,用来以后管理办理了多少证书


4.在各节点中申请证书

1)生成各节点私钥

mkdir /usr/local/nginx/ssl
openssl genrsa -out /usr/local/nginx/ssl/nginx.key 2048


2)生成证书请求

openssl req -new -key /usr/local/nginx/ssl/nginx.key -out /usr/local/nginx/ssl/nginx.csr

这里要输入的信息必须和根证书验证时候添写的信息一样



3)把证书请求文件发送给CA服务器

scp /usr/local/nginx/ssl/nginx.csr 192.168.1.1:/etc/pki/CA/csr

4)并在CA服务器上签署证书

openssl ca -in /etc/pki/CA/csr/nginx.csr -out /etc/pki/CA/nginx.crt

5)发送给请求者

scp /etc/pki/CA/nginx.crt 192.168.1.2:/usr/local/nginx/ssl

配置docker文件并运行(在registry server中配置)

1.停止docker

systemctl stop docker

2.编辑/etc/sysconfig/docker文件,添加一行

DOCKER_OPTS=”–insecure-registry docker.benet.com –tlsverify –tlscacert /etc/pki/CA/cacert.pem”

这里需要把证书服务器上的cacert.pem发送到registry server的相应文件中

3.把根证书复制到/etc/docker/certs.d/docker.test.com/目录下

mkdir -p /etc/docker/certs.d/docker.test.com
cp /etc/pki/CA/cacert.pem /etc/docker/certs.d/docker.benet.com/ca-certificates.crt


运行私有仓库容器

1.获取官方registry镜像运行

docker pull registry

2.运行私有仓库容器并挂载在本地磁盘上

mkdir -p /data/registry

docker run -d -p 5000:5000 -v /data/registry:/tmp/registry docker.io/registry

docker client端配置

把docker registry服务器端的根证书追加到ca-certificates.crt文件里

先从docker registry服务器端把文件/etc/pki/CA/cacert.pem拷贝到本机,然后执行命令:

cat ./cacert.pem >> /etc/pki/tls/certs/ca-certificates.crt
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: