最近領導叫我搭一個公司內部使用的鏡像庫,在網上找了各類資料,遇到了很多問題,東拼西湊最後可算是能夠了。把本身建倉庫的過程總結一下,分享一下,幫助一下和我同樣的新手html
本教程全部內容均基於CentOS 7, 使用其餘發行版的朋友,注意一下幾個文件的位置,其餘通常都oknode
##下載 source 並生成 certificatesgit
安裝 openssl
、 git
github
# yum install -y openssl git
修改 openssl
配置文件 openssl.cnf
(本身在機子上全局搜索一下吧,不一樣的系統不同的)web
添加 subjectAltName = IP:[hostip]
到 [ v3_ca ]
標籤下( hostip
是機子的ip)docker
... [ v3_ca] subjectAltName = IP:[hostip] ...
下載 Registry
源碼服務器
# git clone https://github.com/docker/distribution.git ./distribution
進入 distribution
目錄dom
# cd distribution
新建 certs
子目錄ui
# mkdir certs
使用SSL生成自簽名證書debug
# openssl req \ -newkey rsa:2048 -nodes -keyout certs/domain.key \ -x509 -days 365 -out certs/domain.crt
此命令將提示你回答一些基本信息,用於建立證書,可選擇不填
能夠把domain換成你想要的名字
當你構建這個 Container 時,certs
目錄及其內容也會自動被複制
##將 TLS 加入配置
編輯 ./cmd/registry/config-dev.yml
文件(具體要視Dockerfile而定,舊一點的 Registry
版本也會是config.yml)
# vi ./cmd/registry/config-dev.yml
定位到 http
區塊
http: addr: :5000 debug: addr: localhost:5001 headers: X-Content-Type-Options: [nosniff]
給服務器的自簽名證書新增一個 tls
區塊
http: addr: :5000 debug: addr: localhost:5001 headers: X-Content-Type-Options: [nosniff] tls: certificate: /go/src/github.com/docker/distribution/certs/Arges.crt key: /go/src/github.com/docker/distribution/certs/Arges.key
保存關閉文件
##構建並運行 Registry 鏡像
構建你的 Registry 鏡像
# docker build . -t secure_registry
運行鏡像
# docker run -d -e SETTINGS_FLAVOR=dev -e STORAGE_PATH=/tmp/registry -v /opt/data/registry:/tmp/registry -p 5000:5000 secure_registry
##解決ssl認證問題
將 certs
文件夾下 *.crt
文件發送給要推送鏡像的主機
將 domain.crt
加入到 /etc/pki/tls/certs/ca-bundle.crt
內 (和系統有關,不必定在這個位置,不肯定的話就搜索一下)
# cat domain.crt >> /etc/pki/tls/certs/ca-bundle.crt
重啓docker
# systemctl restart docker
大體就這樣了,有什麼問題儘管提問,雖然我不必定會
參考資料: 部署 Docker Registry 服務、 搭建docker-registry時使用自簽名ssl證書認證問題