Docker swarm获取部署状态

Docker swarm获取部署状态,docker,docker-swarm,Docker,Docker Swarm,在运行docker stack deploy以将一些服务部署到swarm之后,是否有方法以编程方式测试所有容器是否正确启动 目的是在暂存CI/CD管道中验证容器是否正在实际运行,并且在启动时没有失败。通过重新启动策略禁用重新启动 我在看docker stack services,“副本”列对此有用吗 $ docker stack services --format "{{.ID}} {{.Replicas}}" my-stack-name lxoksqmag0qb 0/1 ovqqnya8ato

在运行docker stack deploy以将一些服务部署到swarm之后,是否有方法以编程方式测试所有容器是否正确启动

目的是在暂存CI/CD管道中验证容器是否正在实际运行,并且在启动时没有失败。通过重新启动策略禁用重新启动

我在看docker stack services,“副本”列对此有用吗

$ docker stack services --format "{{.ID}} {{.Replicas}}" my-stack-name
lxoksqmag0qb 0/1
ovqqnya8ato4 0/1

通常在CI/CD中,我看到每个人都在使用docker或docker compose。容器在docker中的运行方式与docker swarm中的运行方式相同,即该容器是否按预期自行工作

这就是说,如果您仍然想在swarm的多层解决方案中进行集成测试,那么您可以在自动化中做各种事情。注意,这将在单个节点群上完成,以使测试更容易docker事件不会从所有节点中提取节点事件,因此跟踪单个节点对于ci/cd来说更容易:

进行一些监视,例如docker事件-f service=以确保容器不会死亡。 在你的容器里一定要有健康检查。它们是确保您的应用程序在容器级别正常运行的唯一方法,您将在docker事件中看到它们的成功或失败。你可以把它们放进去,然后。 您可以将另一个容器连接到同一网络,以使用任务逐个远程测试您的服务。使用反向DNS。这将避免VIP,让您与特定的复制品交谈。 你可以从docker inspect那里得到一些东西
是的,有很多方法可以做到这一点,但它是手动的,您必须非常熟悉docker cli。Docker没有提供一种简单的内置方法来验证Docker堆栈部署是否成功

幸运的是,社区已经创建了一些工具来实现docker在这方面的缺点。其中一些最值得注意的是:


Issuu,的作者,有。

感谢您提供了这个有用的答案。你有库伯内特斯的经验吗?如果是,在验证部署是否成功时,docker swarm与docker swarm有何不同。它是否有更多的内置工具来实现这一点,或者它仍然相当手动,并且需要与您在这里描述的步骤类似。是的,Kubernetes有不同的工具和API。我建议将其作为一个新的SO问题来提问,而不是对Swarm问题的评论。