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
对应的是私库的容器名称和请求API地址,默认启动之后,访问就提示需要账号,密码。
Docker Registry 私库流程大概如此,感兴趣的朋友关注一下~