当前位置:首页 > 服务器类 > Linux > 正文内容

Linux Docker systemctl 命令无法使用的解决方案

Codefans3年前 (2022-05-30)Linux1820

问题介绍:在 Ubuntu 20.04 的 Docker 容器中无法使用 systemctl 命令

众所周知 systemctl 可以用来启动、停止服务和查询服务状态的。

例如你可以使用 systemctl start apache2 这条命令来启动 Apache 服务。

使用 systemctl 命令时发生的错误代码

System has not been booted with systemd as init system (PID 1). Can't operate.

Failed to connect to bus: Host is down

问题出现的原因是:

0 号进程不是 init,所以导致导致缺少相关文件无法运行

Docker的设计理念是在容器里面不运行后台服务,容器本身就是宿主机上的一个独立的主进程,也可以间接的理解为就是容器里运行服务的应用进程。一个容器的生命周期是围绕这个主进程存在的,所以正确的使用容器方法是将里面的服务运行在前台。

再说到systemd,这个套件已经成为主流Linux发行版(比如CentOS7、Ubuntu14+)默认的服务管理,取代了传统的SystemV风格服务管理。systemd维护系统服务程序,它需要特权去会访问Linux内核。而容器并不是一个完整的操作系统,只有一个文件系统,而且默认启动只是普通用户这样的权限访问Linux内核,也就是没有特权,所以自然就用不了!

因此,请遵守容器设计原则,一个容器里运行一个前台服务!

解决方法1:

解决这个问题的两个步骤(不推荐)

第一步:在创建 docker 容器的时候需要多增加一个参数 --privileged

即docker run --privileged -p xxxx:22 --name CONTAINER_NAME -itd CONTAINER_IMAGE_NAME

第二步:执行 /bin/bash 命令并进入容器

docker exec -it CONTAINER_NAME /bin/bash

解决方法2:

不用 systemctl 如何开启、停止或查看服务的运行状态呢?(推荐)

在绝对路径 /etc/init.d/ 下,存放了许多带执行权限的服务文件,如 apache2,ssh 等

于是我们可以直接使用这些文件用来开启、停止或查看服务的运行状态

这些服务文件有许多功能 {start|stop|reload|force-reload|restart|try-restart|status}

例如我需要查看 apache 服务的状态,输入 /etc/init.d/apache2 status,执行后就会返回 * apache is running

扫描二维码推送至手机访问。

版权声明:本文由图慧网发布,如需转载请注明出处。

本文链接:http://www.tuh8.com/?id=34

分享给朋友:

“Linux Docker systemctl 命令无法使用的解决方案” 的相关文章

docker不能正常使用cron任务

基于centos7的docker不能正常使用cron任务问题修改docker centos7镜像对应的容器的/etc/pam.d/crond文件把required 修改成sufficient,如下:account    sufficient &nbs...

ubuntu格式化硬盘

(1)查看硬盘sudo fdisk -lu或sudo blkid(2)格式化磁盘 sudo mkfs.ext4 /dev/sdb (3)将格式化后的磁盘 挂载在8t目录下sudo mount /dev/sdb  ~/8t(4)修改/etc/fstab 添加开机自动挂载s...

Jupyter hub解决了中文乱码问题,JupyterHub

问题在使用matplotlib绘图时,会出现中文变成方框的问题解决方法找到服务器上jupyter hub中字体存放的路径import matplotlib     print(matplotlib.matplotlib_fname())2. 登陆Ju...

docker上搭建rsync server

在linux系统上搭建rsync server,使用群晖hyper backup软件备份资料到linux系统上。sudo docker run -d \  --restart always \  -p 1022:22 \  -p 873:873 \  -v /...

Synology Drive Clientl PC端连接不上的问题

Synology Drive Clientl PC端连接不上的问题相信不少小伙伴有PC端的Synology Drive Clientl 连接不上,而用移动版是正常的这种情况一般是Drive端口没有设置转发,默认端口为6690...