#Docker私有仓库搭载教程
最近领导叫我搭一个公司内部使用的镜像库,在网上找了各种资料,遇到了不少问题,东拼西凑最后可算是可以了。把自己建仓库的过程总结一下,分享一下,帮助一下和我一样的新手
本教程所有内容均基于CentOS 7, 使用其他发行版的朋友,注意一下几个文件的位置,其他一般都ok
##下载 source 并生成 certificates
-
安装
openssl
、git
# yum install -y openssl git
-
修改
openssl
配置文件openssl.cnf
(自己在机子上全局搜索一下吧,不同的系统不一样的)添加
subjectAltName = IP:[hostip]
到[ v3_ca ]
标签下(hostip
是机子的ip)... [ v3_ca] subjectAltName = IP:[hostip] ...
-
下载
Registry
源码# git clone https://github.com/docker/distribution.git ./distribution
-
进入
distribution
目录# cd distribution
-
新建
certs
子目录# mkdir certs
-
使用SSL生成自签名证书
# 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证书认证问题