目录
一、概述
官方Docker Hub地址:https://hub.docker.com/ 中国大陆访问太慢了且准备被阿里云取代的趋势,不太主流。DockerHub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像。Docker Registry是官方提供的工具,可以用于构建私有镜像仓库。
在Docker环境中,UAT、promote和production分别代表不同的环境阶段和用途:
-
UAT (User Acceptance Test):用户验收测试环境,是软件开发过程中的一个重要阶段,用于确保软件系统满足最终用户的实际需求。在这个环境中,用户可以进行实际操作测试,以确保软件的功能和性能符合预期。UAT环境通常是在正式部署到生产环境之前,为用户提供的一个模拟真实使用环境的测试平台。
-
promote:在软件开发和部署的过程中,"promote"一词通常指的是将软件从开发、测试或预发布环境转移到下一个更接近最终用户使用的环境。这个过程可能包括将软件从开发环境转移到测试环境,再从测试环境转移到UAT环境,最终推广到生产环境。Promotion确保了软件在不同阶段的环境中逐步接受测试和验证,以确保软件的稳定性和可用性。
-
production:生产环境,即正式的线上环境,是软件最终部署和运行的环境,面向外部用户开放,用户可以直接访问和使用该环境中的软件。生产环境通常具有最高的安全性和稳定性要求,以确保软件能够持续、稳定地为最终用户提供服务。
二、搭建步骤
2.1. 下载镜像Docker Registry
# docker pull registry 下载Docker私有仓库镜像
docker pull registry:2
2.2. 运行私有库Registry
相当于本地有个私有Docker Hub
docker run -d -p 5000:5000 --name registry -v /home/wzx/registry/:/tmp/registry --privileged=true registry:2
docker run -d
:在后台运行一个新的容器。
-p 5000:5000
:将容器的5000端口映射到宿主机的5000端口。
--name registry
:为运行的容器命名为"registry"。-v 卷挂载 用于将主机上的指定目录挂载到容器内的/tmp/registry目录
--privileged=true
:给予容器额外的权限,例如访问宿主机的设备。
registry:2
:指定要运行的镜像名和标签(tag),这里是从Docker Hub下载的官方registry镜像的第二版。
默认情况下,私有仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调
2.3. 创建新镜像
# -a表示指定作者 -m表示容器描述信息 wzx-tomcat为容器名称 1.0表示容器的Tag
docker commit -a="wangzhexiao" -m="wzx's tomcat, add webapps app" 容器id wzx-tomcat:1.0
2.4. 验证私服上的镜像
curl验证私服库上有什么镜像:
curl -XGET http://192.168.1.11:5000/v2/_catalog
/v2/_catalog 是官方规定的私有镜像仓库请求路径,详见官方文档
请求私有镜像仓库,发现没有任何镜像。
2.5. 将新镜像修改符合私服规范的Tag
docker tag wzx-tomcat:1.0 localhost:5000/wzx-tomcat:1.0
因为是在自己本地上创建私库并验证,所以这里填写本机IP地址localhost
下图红框内的就是按照私服规范生成的新tomcat镜像 :
2.6. 修改配置文件使之支持http
配置Docker客户端以信任私有仓库:
编辑或创建/etc/docker/daemon.json
文件,添加私有仓库地址
{
"insecure-registries" : ["your-private-registry-ip:5000"]
}
sudo systemctl restart docker
docker默认不允许http方式推送镜像,通过配置选项来取消这个限制。修改完后如果不生效,建议重启Docker
2.7. push推送到私服库
docker push your-private-registry-ip:5000/your-image:tag
2.8. 验证私服上的镜像2
curl验证私服库上有什么镜像2
2.9. pull到本地运行
docker pull your-private-registry-ip:5000/your-image:tag
至此,一个完整的Docker私服仓库搭建和镜像推送拉取就已经完成。