问题描述
目前在多台机器上运行着一些 Docker 容器,如 sysdig、consul、fluentd、mesos-slave 等。他们正在迁移到 Ubuntu 18.04 LTS,考虑将现有的配置从 Upstart 转换为 Systemd 或 Docker Compose。用户需要判断哪种解决方案更合适,因为他们已经在使用 Marathon on Mesos,并且这些服务必须在每台主机上运行,并在 Marathon/Mesos 运行之前启动。
解决方案
请注意以下操作可能因版本差异而略有不同,请确保备份配置文件和系统状态。
方案1:使用 Systemd
如果你想要与 Upstart 最相似的解决方案,同时能够进行健康检查并在进程死掉后自动恢复,那么 Systemd 可能是一个很好的选择。以下是迁移到 Systemd 的步骤:
- 创建 Systemd 配置文件。
- 创建一个以 “.service” 结尾的文件,例如:
myfluentd.service
。 在配置文件中设置启动参数、依赖关系和其他配置选项。你可以参考原来的 Upstart 配置来创建 Systemd 配置。
将 Systemd 配置文件放置到合适的位置。
通常,Systemd 配置文件存放在
/etc/systemd/system/
目录下。启用并启动 Systemd 服务。
- 使用
systemctl
命令来启用和启动服务。 例如:
sudo systemctl enable myfluentd.service
和sudo systemctl start myfluentd.service
。确保 Systemd 服务自启动。
- 使用
systemctl
命令启用服务自启动。 - 例如:
sudo systemctl enable myfluentd.service
。
方案2:使用 Docker Compose
如果你考虑将所有容器的配置整合到一个文件中,并且不希望在每个容器上执行健康检查和自动恢复,而是依赖外部的容器编排系统(Marathon/Mesos),那么 Docker Compose 可能是更适合的选择。以下是迁移到 Docker Compose 的步骤:
- 创建 Docker Compose 文件。
- 创建一个
docker-compose.yml
文件。 在文件中定义你的所有服务(容器)以及它们的配置。你可以参考原来的 Upstart 配置来设置容器参数。
启动 Docker Compose 服务。
- 使用
docker-compose
命令来启动服务。 例如:
docker-compose up -d
。可选:将 Docker Compose 服务添加到自启动。
- 如果你想要在系统启动时自动启动 Docker Compose 服务,可以将启动命令添加到系统的自启动脚本中。
注意事项
请记住,根据你的需求和场景,选择 Systemd 还是 Docker Compose 都有不同的优缺点。Systemd 更适合单台主机上运行的服务,而 Docker Compose 更适合在多容器环境中进行编排。考虑你的需要和现有的基础设施,选择最适合的方案。
总结
在迁移到 Ubuntu 18.04 LTS 时,你可以选择将现有的 Upstart 配置转换为 Systemd 或者使用 Docker Compose。根据你的需求,选择适合的解决方案,确保容器能够在系统上稳定运行。