基于suse的開源項(xiàng)目搭建docker私有倉庫https://github.com/SUSE/Portus.git
安裝時(shí)間2017-10-19日,基于github上的master分支進(jìn)行安裝。
安裝環(huán)境centos7.2
1、需要有docker的環(huán)境,假設(shè)已經(jīng)安裝好docker
參考docker document
2、安裝docker-compose編排工具
yum -y install epel-release
yum -y install python-pip
pip install -U docker-compose
3、下載portus項(xiàng)目:
git clonehttps://github.com/SUSE/Portus.git
4、根據(jù)項(xiàng)目中的./Portus/examples/compose來進(jìn)行安裝
cd ./Portus/examples/compose
1)修改.env文件
vim .env#修改MACHINE_FQDN改為對(duì)應(yīng)你需要的域名,xxxx.test-portus.com,此處如果該域名沒有dns解析,則需要配置/etc/hosts

2)修改docker-compose.yml文件
vim docker-compose.yml#修改REGISTRY_AUTH_TOKEN_ISSUER為portus.test.lan此處應(yīng)該是portus項(xiàng)目鏡像的bug,不修改的話token驗(yàn)證會(huì)失敗,不能夠docker
login到registry ,參考issues:https://github.com/SUSE/Portus/issues/1407;

3)修改docker-compose.yml文件
vim docker-compose.yml #添加extra_hosts除nginx配置外都需要添加,此處在github上沒有找到對(duì)應(yīng)的問題,但是會(huì)導(dǎo)致docker中無法解析到你配置的域名,導(dǎo)致你初始化portus的時(shí)候連接不成功,后續(xù)初始化portus的時(shí)候會(huì)提到該問題。
extra_hosts:
- "xxxx.test-portus.com:172.20.2.93"

4)修改nginx.conf配置文件
vim./nginx/nginx.conf#server_name修改為你對(duì)應(yīng)的域名

至此配置修改就OK了,后續(xù)需要使用openssl生成registry和nginx需要用的證書
5、生成ssl證書
cd secrets/
首先執(zhí)行如下命令生成一個(gè)key
openssl genrsa -des3 -out xxx.key 1024
然后他會(huì)要求你輸入這個(gè)key文件的密碼。因?yàn)橐院笠onginx使用。每次reload nginx配置時(shí)候都要你驗(yàn)證這個(gè)PAM密碼的,可以根據(jù)這個(gè)key文件再生產(chǎn)一個(gè)key文件,從而不需要使用這個(gè)密碼;
openssl rsa -in xxx.key -out portus.key
然后根據(jù)這個(gè)key文件生成證書請(qǐng)求文件,此處需要填很多信息CA項(xiàng)hostname需要填寫你的域名xxxx.test-portus.com,不然會(huì)遇到證書驗(yàn)證失敗的問題;
openssl req -new -key portus.key -out portus.csr
最后根據(jù)這2個(gè)文件生成crt證書文件,這里365是證書有效期,最后使用到的文件是key和crt文件。
openssl x509 -req -days 365 -inportus.csr -signkey portus.key -out portus.crt
6、啟動(dòng)portus
docker-compose up –d
7、初始化portus
Windows登陸配置hosts信息,https登陸,
第一次登陸創(chuàng)建admin賬號(hào),創(chuàng)建的第一個(gè)賬號(hào)有admin的權(quán)限。

登陸之后,需要配置registry,此處需要勾選use ssl并填入你的域名;這里如果第4步第3)小步的配置沒有修改,將導(dǎo)致鏈接不上域名。

最后,docker login試了一下,報(bào)錯(cuò)了哈,應(yīng)為我們用的是自簽名的證書,沒有商用的證書,所以docker login還是會(huì)失敗,如下:

我的解決方案是:修改dockerd的啟動(dòng)項(xiàng),重啟docker服務(wù)就可以LOGIN了,然后就可以push鏡像到你的私有倉庫上去了,portus會(huì)記錄所有的操作,使用portus建議參考官方document http://port.us.org/documentation
