为什么要使用私有Docker注册表?

时间:2020-03-03 14:53:13

标签: docker

为什么有人只在源代码管理中共享自己的dockerfile并让docker映像使用者直接使用@RequestWrapper(className = "org.game.webservice.jaxws.HeroChampion", localName = "saveHeroChampion", targetNamespace = "http://webservice.game.org") @ResponseWrapper(className = "org.iom.uktb.webservice.jaxws.SaveHeroChampionResponse", localName = "saveHeroChampionResponse", targetNamespace = "http://webservice.gameorg/") public void saveSputumSmearTest(String heroIDPk, String skill1){ sputumSmearTestManager = (SputumSmearTestManager) BeanRetriever.getBean("sputumSmearTestManager"); HeroChampion heroChampion = new HeroChampion (); HeroChampionBean heroChampionBean = new HeroChampionBean (); heroChampionBean.setHeroIDPk(heroIDPk); heroChampionBean.setSkill1(skill1); try{ BeanUtils.copyProperties(sputumSmearTest, sputumSmearTestBean); sputumSmearTestManager.saveSputumSmearTest(sputumSmearTest, true); }catch(Exception e){ e.printStackTrace(); } } 从dockerfile构建,他们为什么会使用私有docker登录?

对我而言,未经培训的私人Docker注册表似乎与源代码管理具有相同的目的,除了它增加了复杂性,因为它已经与您所在的代码分支分离了,所以您(或您的CI / CD服务器更多)点)必须重建要拉出的标签。

1 个答案:

答案 0 :(得分:1)

当您在真实计算机上进行部署时(例如,您有一项工作在10台计算机上进行部署),通常您并不想一次又一次地重建映像。

相反,您可以一次构建映像,将其存储在某个位置(???),然后部署在测试环境中,运行一些测试,确保其确实具有良好的映像(启动,测试通过等),然后部署在生产环境中。

因此,此“某处”意味着您应该具有一些注册表,并且如果您不想使用Docker中心-您可以使用私有Docker注册表。

从安全性角度讲这都是很有意义的(如果不需要,请不要在云上发布) 和性能(在专用网络中的服务器之间移动图像的速度更快)。

如果您正在运行kubernetes,还可以将其配置为从docker注册表中提取映像,并根据kubernetes部署文件中指定的这些映像运行pod。

如果您在AWS上运行,则可以使用docker Registry运行Fargate或ECS之类的服务。他们将负责跨机器扩展(非常类似于k8s),但是他们仍然需要从某个地方获取图像,嗯,这是一个私有注册表(在这种情况下,称为ECS-Elasctic Container Registry)。 >

底线,在很多(简单)情况下,您都可以不用它,但是在其他情况下,它非常方便