首页 > 解决方案 > 我应该使用 systemd 还是 docker-compose 来保持 Docker 容器在我的系统上运行?

问题描述

我们谈论的是 Docker 容器,如 sysdig、consul、fluentd、mesos-slave 等,我们几乎在所有机器上运行。

目前我们正在使用 Ubuntu 的 Upstart 和 CoreOS 的 Fleectl。我们正在迁移到 Ubuntu 18.04 LTS,目前正在考虑是否将配置转换为:

Systemd 可以进行健康检查,并自动使死掉的进程恢复在线。它也与我们大量使用的 Upstart 最相似。我们的 Upstart 配置文件是从 cloud-config 生成的,如下所示:

- >
    /usr/local/bin/generate-docker-upstart fluentd registry/fluentd:1.0.1
    -e HOST=elasticsearch
    -e PORT=9200
    -e INDEX=fluentd
    -e NODE=`hostname -s`
    -e ROLE=app
    -e ENVIRONMENT={{Ref:Environment}}
    -e TENANT={{Ref:Tenant}}
    -p 24224:24224
    --name \$NAME \$IMAGE

我们使用 AWS CloudFormation 使虚拟机联机。

我们不能使用真正的容器编排框架(我们已经使用 Marathon/Mesos),因为这些服务必须在每台主机上运行,​​并且在 Marathon/Mesos 运行之前运行。

什么解决方案最有意义?将这些文件转换为 systemd 或开始使用 docker-compose,尽管已经在 Mesos 上使用 Marathon?

标签: dockerdocker-composesystemd

解决方案


The restart policy is built-in method to keep Docker containers running.

docker run --restart=always -d image_name

see the docs for details


推荐阅读