概述
Docker Registry是Docker官方开源的镜像仓库 Distribution;可以从Docker Hub中下载该项目的镜像。
Docker Registry详细信息参考:https://docs.docker.com/registry/
安装配置
基于容器安装
docker run -d -p 5000:5000 \
--restart=always \
--name registry \
-v /data/registry:/var/lib/registry \
registry:2.7
私有仓库需要配置https,否则会报错。可以通过添加
insecure-registries
配置解决修改配置需要重启docker;执行命令
kill -SIGHUP $(pidof dockerd)
可以优雅的重启docker在/etc/docker/daemon.json文件中添加如下内容
{ "insecure-registries":["192.168.56.11:5000"] }
配置TLS证书
1、自行生成证书
openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/myrepo.key -x509 -days 365 -out certs/myrepo.crt
生成过程中会提示输入各种信息,注意Common Name一栏的信息输入访问域名,比如myrepo.com
。
生成了密钥文件myrepo.key和证书文件myrepo.crt。自建的证书由于服务器不识别;需要在Docker节点上进行配置证书;
注意路径需要和域名一致,如果不是默认端口443,则还需要加上端口
mkdir -p /etc/docker/certs.d/myrepo.com
cp certs/myrepo.crt /etc/docker/certs.d/myrepo.com/ca.crt
2、启用证书启动
docker run -d \
--name registry \
-v "/data/registry/data:/var/lib/registry" \
-v "/data/registry/certs:/certs" \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/myrepo.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/myrepo.key \
-p 443:443 \
registry:2.7
REGISTRY_HTTP_ADDR : 修改默认监听端口
REGISTRY_HTTP_TLS_CERTIFICATE : 配置证书地址
REGISTRY_HTTP_TLS_KEY : 配置私钥地址
小结
Docker Registry仅满足了镜像存储和管理的功能,用户权限管理相对较弱(官方没有提供,可以通过其他方案解决)。并且没有管理界面,各种功能配置都需要在配置文件中配置,比较麻烦。
可以通过Harbor搭建企业级的镜像管理系统。Harbor 是一个基于Distribution项目开发的一款企业级镜像管理软件,拥有 RBAC (基于角色的访问控制)、管理用户界面以及审计等非常完善的功能。目前已经从 CNCF 毕业,软件比较成熟。
也可使用第三方的镜像仓库,比如Docker Hub及其他公有云提供的镜像仓库;
基本上常见的公有云都有提供镜像仓库服务,并且提供安全认证。