问题背景
在最开始,我在笔记本中运行KVM虚拟机。每次休眠恢复时,在KVM中的虚拟机就会带来大量的CPU负载。
另外我使用的Linux发行版是Debian Testing分支。由于某些服务是特定于发行版名称的,所以这些服务没有办法安装。使用Docker也可以,因此也不是必须使用虚拟机才可以。
但是,如果使用Docker镜像,一个容器启动一个服务,那么我有很多服务岂不是要启动很多容器。
因此才有了这个想法:启动容器,运行systemd进程,使用systemctl进行服务管理,把容器当作虚拟机使用。(这可能违背了容器的最佳实践,但是那只是最常用的场景。在我的场景中,我的做法就是最佳实践。任何食材都具有多种烹饪方法)
本文将介绍如何在Docker Container中运行“systemd”进程,来进行系统及服务管理。
解决办法
执行如下命令:
#!/bin/sh docker run -it \ --name vm-centos \ --hostname vm-centos \ --env container=docker \ --tmpfs /run \ --tmpfs /tmp \ --volume /sys/fs/cgroup:/sys/fs/cgroup:ro \ --cap-add SYS_ADMIN \ centos:7 /sbin/init
参考文献
- WikiNotes/在容器中运行systemd进程
- Is there any concrete and acceptable solution for running systemd inside the docker container?