公司自己的项目肯定少不了搭建私有的docker镜像管理平台,这里记录一下registry搭建过程。
一、简单搭建
1、docker 运行 registry
mkdir -p /data/registry #创建文件夹
docker run -d -p 5000:5000 -v /data/registry:/var/lib/registry --restart=always --name registry registry:2
2、上传
docker pull nginx #拉取nginx docker tag nginx localhost:5000/nginx:v1.0 #标记nginx docker push localhost:5000/nginx:v1.0 #发布到Registry中
3、查看Registry中的镜像
curl http://localhost:5000/v2/_catalog
4、拉取和使用
docker images #查询docker中所有镜像 docker rmi localhost:5000/nginx:v1.0 nginx #删除镜像 docker pull localhost:5000/nginx:v1.0 #拉取刚刚上传的镜像 docker run -d --name myNginx -p 8081:80 localhost:5000/nginx:v1.0 #运行镜像 curl http://localhost:8081 #访问nginx
备注:这个半成品“完成了”,如果其它机器需要上传docker会提示https,也可以通过配置docker方式解决,下面来看一下配置SSL
二、配置SSL
1、通过nginx配置https然后映射registry
2、配置registry证书
这里有两种方式都可以达到相同的效果,我搭建的是第一种
准备工作:需要拥有一个域名、https证书(我这里是用的阿里云的免费证书)
配置nginx:
server { #https listen 443; server_name registry.text.top; ssl on; ssl_certificate /data/cer/registry.text.top.pem; ssl_certificate_key /data/cer/registry.text.top.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:5000; } }
阿里云文档也有详细介绍
提交应用:
docker tag nginx registry.text.top/nginx:v1.0 #标记nginx
docker push registry.text.top/nginx:v1.0 #发布到Registry中
备注:现在已经正常使用了,如果不想任何人都可以上传下载镜像,还需要配置registry验证
三、配置registry验证
我这里采用比较简单的htpasswd方式
yum install httpd-tools #安装htpasswd
htpasswd -Bbn admin 123456 > /data/auth/passwd #生成秘钥
查看passwd内容
cat /data/auth/passwd
配置启动registry容器
docker run -d -p 5000:5000
-v /data/registry:/var/lib/registry
-v /data/auth:/auth
-e REGISTRY_AUTH=htpasswd
-e REGISTRY_AUTH_HTPASSWD_REALM=Registry_Realm
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/passwd
--restart=always --name registry registry:2
现在再提交镜像,就会提示:no basic auth credentials
docker登录Registry
docker login registry.text.top
登出
docker logout registry.text.top
四、Registry 图形化管理界面
github上面有很多开源的ui管理界面,可以根据自己喜欢搭建,这里挑一个出来配置
地址:https://github.com/jc21/docker-registry-ui
docker run -d -p 5001:80 --name registry-ui -e REGISTRY_HOST=registry.text.top -e REGISTRY_SSL=true -e REGISTRY_DOMAIN=registry.text.top -e REGISTRY_USER=admin -e REGISTRY_PASS=123456 jc21/registry-ui
界面