Ubuntu 22.04容器中systemctl命令无法使用的问题咨询
为什么Ubuntu 22.04 Docker容器里找不到systemctl?
官方镜像做了轻量化裁剪:Ubuntu的官方Docker镜像为缩小体积、适配容器单进程运行场景,默认没有预装
systemd套件(包括systemctl工具)。完整的Ubuntu服务器/桌面系统会默认包含这些组件,但容器镜像只保留了最基础的系统环境。容器默认未以systemd作为初始化进程:就算手动安装了systemd,普通方式启动的容器里,PID 1是bash而非systemd。systemd必须作为PID 1运行才能正常初始化服务管理环境,否则无法正常工作,
systemctl也没法调用它。
解决方法
临时安装systemctl(仅测试用)
在容器内执行以下命令安装组件:apt update && apt install -y systemd注意:此时直接运行
systemctl仍会报错,因为systemd不是PID 1。启动支持systemd的容器
如果需要完整的systemd环境,启动容器时需添加特权参数并挂载cgroup目录,指定systemd为启动进程:docker run -it --name systemd-tutorial --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro ubuntu /sbin/init进入容器后即可正常使用
systemctl命令。
内容的提问来源于stack exchange,提问作者WorldNeedsRefactoring
相关产品推荐
相关产品推荐

