实验需求:
创建自己的仓库----镜像仓库
实验环境:
两台centos7虚拟机
实验步骤:
说明:
docker.benet.com这是docker registry服务器的主机名称,ip是192.168.1.107;因为https的SSL证书要用到主机名,所以要设置主机名。
dockerregistry 服务器作为处理docker镜像的最终上传和下载,用的是官方的镜像registry。
nginx 1.6.x 是一个用nginx作为反向代理服务器
注:关闭selinux
挂载centos7系统盘
手动创建yum源
私有仓库https支持:
安装依赖软件包:
编辑/etc/hosts,把docker.benet.com的ip地址添加进来,例如:
主机名、ip地址
生成根密钥
先把
/etc/pki/CA/cacert.pem
/etc/pki/CA/index.txt
/etc/pki/CA/index.txt.attr
/etc/pki/CA/index.txt.old
/etc/pki/CA/serial
/etc/pki/CA/serial.old
删除掉!
生成根证书
输出如下信息
会提示输入一些内容,因为是私有的,所以可以随便输入,最好记住能与后面保持一致,特别是"Common Name”。必须要和hostname显示的一致。
上面的自签证书cacert.pem应该生成在/etc/pki/CA下
为nginx web服务器生成ssl密钥
注:因为CA中心与要申请证书的nginx服务器是同一个所以就在本机上执行为nginx服务器生成ssl密钥了,否则应该是在另一台需要用到证书的服务器上生成。
查看nginx服务器的密钥
为nginx生成证书签署请求(同样会提示输入一些内容,Commone Name一定要是你要授予证书的服务器域名或主机名,challenge password不填)
私有CA根据请求来签发证书
输出内容
同样会提示输入一些内容,选择y就可以了!
查看nginx的证书
安装,配置,运行nginx
添加组和用户
下载nginx源文件
编译 nginx:
安装(上述选项的解释:
--user=USER 设定程序运行的用户环境(www)
--group=GROUP 设定程序运行的组环境(www)
--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模块ngx_http_flv_module
为Flash Video(FLV)文件提供服务端伪流媒体支持)
编辑/opt/nginx/conf/nginx.conf文件
验证配置
启动nginx
验证nginx是否启动
配置,运行Docker
编辑/etc/sysconfig/docker文件,加上如下一行
把根证书复制到/etc/docker/certs.d/docker.yy.com/目录下
启动docker
通过获取官方 registry 镜像来运行
将目录/opt/data/registry作为私有仓库的位置
运行私有仓库容器
(可以通过 -v 参数来将镜像文件存放在本地的指定路径。例如上面的例子将上传的镜像放到 /opt/data/registry 目录。
-p(小写的)用于将容器的5000端口映射宿主机的5000端口)
验证registry
注意防火墙
服务端的配置就到此完成!
Docker客户端配置
编辑/etc/hosts,把docker.benet.com的ip地址添加进来
把docker registry服务器端的根证书追加到ca-certificates.crt文件里
先从docker registry服务器端把文件/etc/pki/CA/cacert.pem拷贝到本机,然后执行命令:
cat./cacert.pem>> /etc/pki/tls/certs/ca-certificates.crt
验证docker.yy.com下的registry
导入镜像
开启docker服务
从Docker HUB 上拉取一个镜像测试,为基础镜像打个标签:
docker tag centos:centos6docker.benet.com/centos:centos6
发布:上传镜像到本地私有仓库
查看私有仓库是否有对应的镜像
# curl 192.168.0.167:5000/v1/search
查看镜像的存储目录和文件(在镜像服务器)
tree /opt/data/registry/repositories
从私有仓库pull下来p_w_picpath,查看p_w_picpath
查看私有仓库是否有对应的镜像