Docker Registry 是Docker官方一个镜像,可以用来储存和分发Docker镜像。目前比较流行的两个镜像私库是Docker Registry ,HarBor 其中HarBor最合适企业级应用,提供良好的WEB界面进行管理。
Docker Registry搭建
本文主要介绍Docker Registry搭建的方式,官网地址:registry – Official Image | Docker Hub
拉取镜像:
docker pull registry |
运行镜像:
docker run -d -p 5000:5000 –restart always –name registry registry:2 |
防火墙需要开放5000端口,或者直接关闭防火墙
systemctl status firewalld.service #查看防火墙状态 | |
systemctl stop firewalld.service #暂停防火墙 | |
systemctl disable firewalld.service #永久关闭防火墙 |
检查镜像是否运行成功:docker ps,镜像成功之后私库就算搭建成功了。
推送代码
方法一:VS2019发布可以一步直接推送到私库
每次点击发布就会自动推送到私库,相当方便,背后原理和手动推送没有区别,只是VS2019默默地把我们做了工作:创建镜像,给镜像打标签,推送镜像。通过Docker Desktop 工具我们可以查看到本地镜像:
方法二:手动推送
手动推送需要我们先给镜像打标签,然后推送镜像。
docker image tag webapplication4 192.168.3.35:5000/webapplication4:latest | |
docker push 192.168.3.35:5000/webapplication4:latest |
查看己推送的镜像,Docker Registry支持HTTP请求API获取相关数据,最好是搭建WEB可视化界面管理,下文有讲到。
注意事项:docker 默认要求HTTPS连接,如果私库不搭建HTTPS,那么客户端就需要配置docker的配置文件添加信任源。服务器端(即docker私库)不需要配置。
{ | |
“insecure-registries”:[“192.168.3.35:5000”] | |
} |
Htpasswd
一般情况下Docker Registry是充许自由访问,作为公司或个人私库自然是需要进行安全设置,我们可以通过htpasswd实现登陆限制。
安装htpasswd
yum -y install httpd |
在宿主机上创建文件夹来储存htpasswd的账号或密码
mkdir /usr/local/auth |
生成密码
htpasswd -Bbn admin 123456 > /usr/local/auth/passwd |
需要重启容器,配置htpasswd
docker run | |
-p 5000:5000 | |
–restart=always | |
–name registry | |
-v /usr/local/auth:/auth | |
-e REGISTRY_AUTH=htpasswd | |
-e REGISTRY_AUTH_HTPASSWD_REALM=Registry_Realm | |
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/passwd | |
-d registry:2 |
重新请求API接口时,己提示需要认证。
搭建可视化WEB界面
私库可以通过API进行交互,这样交互会很麻烦,提供可视化界面会比较容易管理一些,docker-registry-browser 管理界面提供一些基础功能,简单易用。
dokcer Hub地址:klausmeyer/docker-registry-browser – Docker Image | Docker Hub
gitHub地址:docker-registry-browser/README.md at master · klausmeyer/docker-registry-browser · GitHub
在私库服务器运行镜像:
docker run | |
–name registry-browser | |
-p 8080:8080 | |
–restart=always | |
—link registry | |
-e DOCKER_REGISTRY_URL=http://registry:5000/v2 | |
-d klausmeyer/docker-registry-browser |
注意事项:docker-registry-browser是镜像,当运行docker-registry-browser的时候会新建一套虚拟环境,所以默认配置下docker-registry-browser是管理不到docker私库。需要特别配置两个参数:
–link registry
-e DOCKER_REGISTRY_URL=http://registry:5000/v2