gpt4 book ai didi

testing - Docker——它为我们的团队带来了什么真正的值(value)?

转载 作者:行者123 更新时间:2023-11-28 20:05:42 25 4
gpt4 key购买 nike

我对 Docker 非常陌生。我们的团队有一个非常好的部署队列,我们​​有不同的 CI 引擎用于不同的项目,包括 Jenkis 和 TeamCity。

开发人员通常会 checkin ,然后 CI 接管、部署并为测试团队测试做好充分准备。我一直认为这是一个完美的模型。当然,某些部分和我们的实现有其缺陷,但它非常适合我们想要的。

现在,我们的 Dev-Ops 正在引入 Docker,每次我们从 teamcity 运行构建时,测试团队都会从 Docker Registry 获取 Docker 镜像。虽然这听起来真的很花哨,但我仍然无法理解它的好处。

经过我的研究,我的结论是 Dockers 可以成为 VM 的一个很好的轻量级替代品。但这仅在您使用任何 VM 时才有效?我们没有使用任何 VMS?我只是不明白这里的真正值(value)是什么?另外,在搜索时我发现了一个关于 Docker 的比较好的链接:

https://www.ctl.io/developers/blog/post/what-is-docker-and-when-to-use-it/

他们讨论什么时候应该使用 Docker,其中一个观点是这样说的:

只要您的应用需要经历多个开发阶段(dev/test/qa/prod,尝试 Drone 或 Shippable,两者都执行 Docker CI/CD),请使用 Docker

好的。但是他们没有进一步详细说明当我的应用程序必须经历多个阶段时为什么 docker 有用?

当现有设置已经正常运行时,它对常规开发/测试设置有何极大帮助?

最佳答案

首先,您将它与 VM 进行比较是正确的,因为它类似于 VM。然而,docker 非常轻巧。这个属性是一开始最让我惊讶的。与虚拟机相反,容器更有效地共享资源。虚拟机是隔离的。容器可以在主机上同时运行,开销很小。您可以将容器配置为能够相互通信(通过卷或端口绑定(bind))。

此外,在我的团队中,docker 带来了以下好处:

  • 我们的应用程序由一个大型应用程序和其他几个微服务组成。但是我们希望将所有应用程序之间相互依赖的包作为一个包发布,这消除了确定应将哪个版本的应用程序和微服务部署在一起(兼容性)等问题。也就是说,图像包含您需要的所有内容,您可以使用 docker-compose 将所有应用程序或一个接一个地向上/向下移动。您不需要部署,只需拉取图像并启动一个容器即可。如果您希望停止其中一个微服务,可以在不影响其他微服务的情况下完成。

  • 团队中的开发人员,可以在本地机器上运行完全相同的图像,例如解决生产中出现的问题;这意味着可以在与生产相同的环境中进行故障排除。这带来了环境标准化,不再有“但它可以在机器上运行”的说法。

  • 它给我们带来的另一个好处如下:我们构建一个 docker 镜像,对其运行我们的测试,并在所有这些阶段成功后将其推送到注册表,这转化为一个很好的可移植性。

  • 能够对容器进行版本控制。您可以轻松地检查当前版本和以前版本之间的容器。如果您想回滚 - 可以顺利完成。

  • 隔离和保护应用程序。所有容器都是隔离的,您可以轻松控制进出的内容。

关于testing - Docker——它为我们的团队带来了什么真正的值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43883425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com