1.Docker仓库
docker仓库实际上是一个docker容器,从网上下载registry.tar导入镜像,利用该镜像即可以生成docker仓库。
为了安全,这里利用了nginx作为反向代理服务器,启用了ssl方式的加密传输,客户端可以通过访问nginx服务器来下载镜像。
注意:在本案例中,docker仓库和nginx服务器处于同一主机中。
1)安装前准备
固定主机名
固定IP地址
在hosts文件中添加本机的解析条目(没有DNS的情况下)
安装http支持包,其中pcre-devel支持正则表达式,zlib-devel支持压缩算法
2)搭建CA,实现加密传输。
检查该目录,确定该目录下没有以下文件:
cacert.pem index.txt index.txt.attr index.txt.old serial serial.old
生成根密钥
“genrsa”为算法,“private/cakey.pem”为密钥的生成的位置,这里使用的是相对路径
“2048”为密钥长度。
生成根证书,执行命令后依次要输入:国家代码(两个英文字母)、省份、城市、组织、单位、邮箱。
为nginx生成密钥(在nginx服务器)
为nginx生成证书签署请求(在nginx服务器)
私有CA根据请求来签发证书(在CA服务器即docker仓库服务器,需要将请求发送给CA)
出现提示时,输入两次y
证书生成
3)安装、配置、运行nginx
创建运行账户和组
编译安装nginx
优化nginx启动执行路径
修改nginx.conf
检测nginx主配置文件,并且启动nginx程序。
添加防火墙例外
4)配置运行docker
需要先关闭docker服务
编辑docker配置文件,添加这行内容,目的是实现安全的传输。
启动docker服务
5)运行私有仓库容器
导入registry.tar
运行容器,容器通过的端口为5000,这里使用了数据卷挂载到了容器中。
测试仓库是否可用,浏览器访问“https://docker.benet.com”或者执行以上命令显示代码为200,说明仓库可用。
2.配置客户机
1)配置前准备
同样,在hosts中添加解析记录,这里写的是docker 仓库的主机名和IP地址。(当nginx服务器和docker仓库不在同一台主机时,填写的便是nginx服务器的)
拷贝证书,并且重命名。
测试仓库是否可用
注册账户
2)上传下载镜像
客户端已存在的镜像
上传:
更换tag标签后上传到docker仓库
在仓库中查看客户端上传的镜像,需要先安装tree工具。
下载:
在客户端删除所有镜像,然后下载之前传到仓库的镜像。
最后在客户端发现该镜像已存在。
原文链接:https://blog.51cto.com/fengjicheng/1901861