【问题标题】:Restart Docker Containers when they Crash Automatically自动崩溃时重启 Docker 容器
【发布时间】:2017-02-27 18:52:48
【问题描述】:

如果容器自动崩溃,我想重新启动它。我不知道该怎么做。我有一个脚本 docker-compose-deps.yml,它有 elasticsearch、redis、nats 和 mongo。我在终端中运行它来进行设置:docker-compose -f docker-compose-deps.yml up -d。在此之后,我通过运行:docker-compose up -d 来设置我的容器。如果它们崩溃,有没有办法让这些容器重新启动?我注意到 docker 有一个内置的重启功能,但我不知道如何实现。

经过一些反馈后,我将restart: always 添加到我的docker-compose 文件和我的docker-compose-deps.yml 文件中。这看起来正确吗?或者这就是您将始终执行重启的方式?

docker-compose 示例

myproject-server:
  build: "../myproject-server"
  dockerfile: Dockerfile-dev
  restart: always
  ports:
  - 5880:5880
  - 6971:6971
  volumes:
  - "../myproject-server/src:/src"
  working_dir: "/src"
  external_links:
  - nats
  - mongo
 - elasticsearch
 - redis
myproject-associate:
  build: "../myproject-associate"
  dockerfile: Dockerfile-dev
  restart: always
  ports:
  - 5870:5870
  volumes:
  - "../myproject-associate/src:/src"
  working_dir: "/src"
  external_links:
  - nats
  - mongo
  - elasticsearch
  - redis

docker-compose-deps.yml 示例

nats:
  image: nats
  container_name: nats
  restart: always
  ports:
  - 4222:4222
mongo:
  image: mongo
  container_name: mongo
  restart: always
  volumes:
  - "./data:/data"
  ports:
  - 27017:27017

【问题讨论】:

  • 对我来说看起来不错,但最好的测试方法是故意让其中一个容器发生故障,看看它是否会跳回
  • 好的,太好了!感谢您的意见!

标签: docker docker-compose docker-container


【解决方案1】:

如果您使用的是 compose,它有一个重启标志,类似于 docker run 命令中存在的标志,因此您可以使用它。这是有关此部分的文档的链接- https://docs.docker.com/compose/compose-file/

当您进行部署时,这取决于您部署到的位置。大多数容器集群,如 kubernetes、mesos 或 ECS 都会有一些配置,您可以使用它来自动重启容器。如果您不使用任何这些工具,您可能是手动启动容器,然后可以像在本地一样使用重启标志。

【讨论】:

  • 我对我的两个文件进行了更改并添加了它们,以便可以看到更改。这看起来正确吗?
【解决方案2】:

我觉得不错。在处理 Docker 策略时,您想要了解的是每个策略的含义。 always 策略意味着如果它因任何原因崩溃自动重启。

因此,如果它因任何原因停止,请继续并重新启动它。

那么你为什么要使用always 而不是on-failure

在某些情况下,您可能有一个您始终希望确保正在运行的容器,例如 Web 服务器。如果您正在运行公共 Web 应用程序,您可能希望该服务器 100% 可用。

所以对于 Web 应用程序,我希望您想使用 always。另一方面,如果您在文件上运行工作进程然后自然退出,这将是on-failure 策略的一个很好的用例,因为工作容器可能已完成处理文件并且您可能希望让它关闭而不让它重新启动。

这就是我希望使用on-failure 策略的地方。因此,不仅要了解语法,还要了解何时应用哪种策略以及每个策略的含义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多