写点什么

systemd 和容器的姻缘

  • 2015-09-28
  • 本文字数:1300 字

    阅读完需:约 4 分钟

systemd 是 Linux 平台下的一款系统和服务管理器,兼容 SysV 和 LSB(Linux Standard Base)启动脚本。近日,CoreOS 团队采访了 systemd 项目的创始人 Lennart Poettering,探讨了 systemd 的历史,以及与容器结合、未来的规划等问题。目前,Arch Linux、CoreOS、Debian、Fedora、openSUSE、Ubuntu 等 Linux 发行版已经将 systemd 作为默认的服务管理器

systemd 历史

Lennart 描述,在创建 systemd 项目之前,他们曾经非常关注由 Canonical 公司(Ubuntu 发行版维护公司)创建的 Upstart 项目。Upstart 是严格事件驱动,代码比较简洁,当时已经被 Ubuntu 和 Fedora 等发行版采用。但是经过细致了解,Lennart 发现 Upstart 的基础设计是倒退的。他认为系统管理器应该计算到启动时的细节,而不是像 Upstart 那样只计算一个大概的工作,将细节留给开发者和系统管理员。因为这些区别,systemd 项目开始创建。

在 systemd 项目的创建之初,这些创建者们从系统管理员和其他系统启动器中汲取灵感。最初 systemd 被设计成仅仅是一个初始化(init)系统,即作为一个独立的启动进程,完成 Linux 用户空间启动的基础工作。然后,启动并不是 systemd 需要解决的唯一问题,后续,systemd 主要在 Linux 用户空间的创建和运行时维护上进行了大量工作。

目前,systemd 已经可以被看做是操作系统构建过程中需要的基础构建模块集,它除了是一个初始化系统之外,还包括了设备管理、登录管理、网络管理、日志模块等等。

systemd 和容器的关系

现代系统和服务管理中越来越多的应用到了容器。容器本身包含了应用需要的所有依赖,systemd 的作用,就是作为粘合剂,将容器和操作系统结合起来。

目前,在 systemd 中,一些命令已经能够直接感知到容器。这些命令的控制和信息获取,除了针对当前主机,也能够针对主机上的所有容器。例如journalctl命令,除了支持显示主机日志之外,还能显示主机上运行的容器输出的日志,并且可以将所有容器、主机的日志合并和一个日志流。

对于 systemd 来说,除了能够支持管理容器的运行,同时也能够运行在容器中。目前对 systemd 的大部分测试本身就是在容器中完成的,这是因为和物理机器相比,容器有着更快的启动速度,并且更容易进行测试。

systemd 现在也包含了一个命令systemd-nspawn用于管理容器。起初编写这个命令的目的是为了测试 systemd,但是现在它已经可以作为生产用途。事实上,CoreOS 的 rkt 容器工具,已经在使用这个命令作为底层容器后段。

更多 systemd 和容器、操作系统相关内容,可以观看 Lennart 在 CoreOS Fest 上的演讲: systemd at the Core of the OS

systemd 和其他容器工具的结合

目前 systemd 和 rkt 的结合已经基本上完成,rkt 使用 systemd-nspawn 作为它的容器后端。对于 systemd 的开发者来说,他们更加希望 systemd 能够专注于单机的管理,而上层的工具,如 rkt,可以基于 systemd,提供诸如分布式、网络感知高级等功能。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-09-28 19:002495

评论

发布
暂无评论
发现更多内容

Druid连接池源码阅读01

石小天

网站开发进阶(五十四)jQuery获取父级元素、子级元素、兄弟元素方法汇总

No Silver Bullet

JQuery框架 5月月更

沙利文发布《2021年中国数据库市场报告》:中国分布式数据库2021专利占全球76%

科技热闻

赵海鹏:如何进行OpenHarmony音频特性架构设计和开发工作

OpenHarmony开发者

OpenHarmony 开发者故事 开发者说

【架构学习10】——毕业总结

tiger

架构实战营

来自2022年的Python 网络爬虫补充知识,HTML+JSON+爬虫场景

梦想橡皮擦

5月月更

区间合并算法

工程师日月

算法 5月月更

『Python』题集⒋

謓泽

Python 5月月更

ptrace注入分析

小道安全

趣学设计模式-代理模式

ZuccRoger

5月月更

为了让女朋友运动起来,小伙儿不仅买单车还设计了智能防盗单车锁

华为云开发者联盟

stm32 华为云IoT 智能防盗单车锁 蓝牙

【ELT.ZIP】OpenHarmony啃论文俱乐部——大数据框架性能优化系统

ELT.ZIP

大数据 OpenHarmony 压缩算法 ELT.ZIP

kubernetes下的Nginx加Tomcat三部曲之三

程序员欣宸

Java Kubernetes 5月月更

GaussDB(for Influx)与开源企业版性能对比

华为云开发者联盟

数据库 开源 查询 写入 GaussDB(for Influx)

位运算小妙招-求二进制序列中1的个数

芒果酱

c++ C语言 5月月更

面试突击47:死锁产生的原因有哪些?

王磊

Java 面试 java面试

极狐GitLab入驻阿里云计算巢,共同提升云上开发体验

阿里云弹性计算

DevOps 计算巢

5 月 20 日,API 网关 Apache APISIX Summit ASIA 2022 重磅来袭

API7.ai 技术团队

开源 API网关 Apache APISIX APISIX 网关 APISIX Summit

互联网用户画像,精准营销,数仓有妙招

华为云开发者联盟

位图 GaussDB(DWS) 用户画像 精准营销 Roaringbitmap

SAP 订单模型的编排方式概述

汪子熙

订单管理 订单 5月月更 b2b 编排系统

druid源码学习一

Nick

源码 Druid

数据湖揭秘—Delta Lake

阿里云大数据AI技术

sql spark 分布式计算 关系型数据库 存储

姐姐驾到 | 零基础小白如何学前端!

锋享前端

数据库连接池-Druid 源码学习(一)

wjchenge

初始化 Druid 源码、

YUV数据分析

Loken

音视频 5月月更

【架构学习09】——电商秒杀系统

tiger

架构实战营

【LeetCode】乘积小于 K 的子数组Java题解

Albert

LeetCode 5月月更

共同推动基础软件根技术发展,华为与中国软件行业协会签署战略合作协议

科技热闻

【ELT.ZIP】OpenHarmony啃论文俱乐部——云计算数据压缩方案

ELT.ZIP

云计算 OpenHarmony 数据压缩 ELT.ZIP

C语言_标准时间与秒单位的转换

DS小龙哥

5月月更

明道云入选爱分析2022年两份低代码研究报告

明道云

systemd和容器的姻缘_语言 & 开发_金灵杰_InfoQ精选文章