基于suse的开源项目搭建docker私有仓库https://github.com/SUSE/Portus.git
安装时间2017-10-19日,基于github上的master分支进行安装。
安装环境centos7.2
1、需要有docker的环境,假设已经安装好docker
参考docker document
2、安装docker-compose编排工具
yum -y install epel-release
yum -y install python-pip
pip install -U docker-compose
3、下载portus项目:
git clonehttps://github.com/SUSE/Portus.git
4、根据项目中的./Portus/examples/compose来进行安装
cd ./Portus/examples/compose
1)修改.env文件
vim .env#修改MACHINE_FQDN改为对应你需要的域名,xxxx.test-portus.com,此处如果该域名没有dns解析,则需要配置/etc/hosts
2)修改docker-compose.yml文件
vim docker-compose.yml#修改REGISTRY_AUTH_TOKEN_ISSUER为portus.test.lan此处应该是portus项目镜像的bug,不修改的话token验证会失败,不能够docker
login到registry ,参考issues:https://github.com/SUSE/Portus/issues/1407;
3)修改docker-compose.yml文件
vim docker-compose.yml #添加extra_hosts除nginx配置外都需要添加,此处在github上没有找到对应的问题,但是会导致docker中无法解析到你配置的域名,导致你初始化portus的时候连接不成功,后续初始化portus的时候会提到该问题。
extra_hosts:
- "xxxx.test-portus.com:172.20.2.93"
4)修改nginx.conf配置文件
vim./nginx/nginx.conf#server_name修改为你对应的域名
至此配置修改就OK了,后续需要使用openssl生成registry和nginx需要用的证书
5、生成ssl证书
cd secrets/
首先执行如下命令生成一个key
openssl genrsa -des3 -out xxx.key 1024
然后他会要求你输入这个key文件的密码。因为以后要给nginx使用。每次reload nginx配置时候都要你验证这个PAM密码的,可以根据这个key文件再生产一个key文件,从而不需要使用这个密码;
openssl rsa -in xxx.key -out portus.key
然后根据这个key文件生成证书请求文件,此处需要填很多信息CA项hostname需要填写你的域名xxxx.test-portus.com,不然会遇到证书验证失败的问题;
openssl req -new -key portus.key -out portus.csr
最后根据这2个文件生成crt证书文件,这里365是证书有效期,最后使用到的文件是key和crt文件。
openssl x509 -req -days 365 -inportus.csr -signkey portus.key -out portus.crt
6、启动portus
docker-compose up –d
7、初始化portus
Windows登陆配置hosts信息,https登陆,
第一次登陆创建admin账号,创建的第一个账号有admin的权限。
登陆之后,需要配置registry,此处需要勾选use ssl并填入你的域名;这里如果第4步第3)小步的配置没有修改,将导致链接不上域名。
最后,docker login试了一下,报错了哈,应为我们用的是自签名的证书,没有商用的证书,所以docker login还是会失败,如下:
我的解决方案是:修改dockerd的启动项,重启docker服务就可以LOGIN了,然后就可以push镜像到你的私有仓库上去了,portus会记录所有的操作,使用portus建议参考官方document http://port.us.org/documentation