如何防止 Docker 容器在同一服务中的另一个容器试图打开时打开?
How to prevent a Docker Container to turn on while another Container in the same Service is trying to?
我想防止几个容器一起打开。
即想象我有一个服务,我想打开它的 5 个副本。
那么他们应该这样做:
容器 1 启动 ==> 容器 1 运行 并且健康 ==> 容器 2 启动 ==> 容器 2 运行 并且健康 ==> 容器 3 启动 ==> 容器 3 运行 并且健康 ==> 容器 4 启动 ==> 容器 4 运行 并且健康 ==> 容器 5 启动 ==> 容器 5 运行 并且健康。
我检查了 HEALTHCHECK,但我不确定在这种情况下它是否对我有帮助
谢谢
您可以添加另一个应用容器作为协调器。
跟这个有很大关系。
我的想法是拥有一个共享的 Redis,其中有一个共享锁。因此,每个新容器开始查询共享 Redis 中的那个锁,当获得锁时,容器完成启动,然后释放锁。
https://redis.io/topics/distlock
Distributed locks are a very useful primitive in many environments
where different processes must operate with shared resources in a
mutually exclusive way.
我想防止几个容器一起打开。 即想象我有一个服务,我想打开它的 5 个副本。
那么他们应该这样做:
容器 1 启动 ==> 容器 1 运行 并且健康 ==> 容器 2 启动 ==> 容器 2 运行 并且健康 ==> 容器 3 启动 ==> 容器 3 运行 并且健康 ==> 容器 4 启动 ==> 容器 4 运行 并且健康 ==> 容器 5 启动 ==> 容器 5 运行 并且健康。
我检查了 HEALTHCHECK,但我不确定在这种情况下它是否对我有帮助
谢谢
您可以添加另一个应用容器作为协调器。
跟这个有很大关系
我的想法是拥有一个共享的 Redis,其中有一个共享锁。因此,每个新容器开始查询共享 Redis 中的那个锁,当获得锁时,容器完成启动,然后释放锁。
https://redis.io/topics/distlock
Distributed locks are a very useful primitive in many environments where different processes must operate with shared resources in a mutually exclusive way.