QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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:002571

评论

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

世优科技AI数字人产品“世优BOTA”发布!全面提升AI虚拟员工能力

联营汇聚

编程中最难的就是命名?这几招教你快速上手

阿里巴巴云原生

阿里云 编程 云原生

详细讲解spdk里的examples/nvmf/nvmf/nvmf.c文件

linux大本营

nvme 文件存储

Apple 的 plist 编辑器入门指南:基础操作与高级功能详解

雪奈椰子

文本搜索工具ack与grep

坚果

Linux 三周年连更

浅析低代码开发的典型应用构建场景

力软低代码开发平台

终于有人把动态规划、冒泡排序、二叉树、链表、栈全部讲清楚了

收到请回复

程序员 java

敏捷宣言和原则

老王同学

读书笔记

已知非空线性链表由list指出,链结点的构造为(data,next)。写-算法,将链表中数据域值最小的那个链结点移到链表的最前面。要求:不得额外申请新的链结点

linux大本营

链表 C语言 数据结构与算法

如何通过C#/VB.NET代码将PowerPoint转换为HTML

在下毛毛雨

html PowerPoint 文档转换

有道CEO周枫:当我们谈论大模型时,应该关注哪些新能力?

有道技术团队

为开发者搭建创新舞台 OpenHarmony创新赛正式启动

最新动态

DevOps 与研发效能资深技术专家张乐:研发效能的升维思考与降维执行

万事ONES

【源码分析】【seata】at模式分布式事务-tm实现逻辑

如果晴天

源码分析 分布式事务 seata Seata框架

logrotate怎么使用

linux大本营

Linux 日志管理

手语识别:解锁语言交流的新时代

来自四九城儿

qemu怎么用

linux大本营

qemu

Go 语言快速入门指南:GET 和 POST 方法

宇宙之一粟

Go HTTP post GET 三周年连更

发送GET请求时,浏览器请求的参数是指什么

linux大本营

HTTP url GET

C语言system函数判断返回错误

linux大本营

C语言

Logrotate正则匹配文件名

linux大本营

正则表达式 Linux

一个能在Linux下使用C++编写的访问RabbitMQ接收发送数据的可编译代码

linux大本营

RabbitMQ 消息队列 C++

九层天塔DApp合约系统开发搭建

薇電13242772558

NFT

构建数据中台——数据只有被使用起来,才能创造价值

引迈信息

数据库 数据中台 低代码 JNPF 数字化、操作系统、中台

seq命令

linux大本营

Shell 脚本

Rust、Go 和 Swift 在性能和并发性方面有何差异?

非凸科技

Go swift 性能 编程语言 高并发

使用Plist编辑器——简单入门指南

FBEC大会 | 瑞云科技 CTO 赵志杰:元宇宙时代的基础设施——实时云渲染

3DCAT实时渲染

实时渲染 实时云渲染 实时渲染云

nvmf协议

linux大本营

网络协议 nvme RDMA技术

linux如何设置一个环境变量,在shell退出之后也不会失效

linux大本营

Linux Shell export

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