部署后端的时候,需要在以CentOS为基础镜像的docker容器中使用到JDK以及MySQL服务(我需要部署的MySQL版本是8.0的),其中JDK服务非常简单,直接安装即可使用,但是在docker容器中使用MySQL服务就会出现很多问题,最常见的问题就是当我使用systemctl start mysqld命令启动MySQL服务的时候会出现:Failed to get D-Bus connection: Operation not permitted的错误提示,尝试过创建容器的时候使用特权模式--privileged=true启动容器,但是行不通,最后是找到了更换systemctl文件的方法顺利解决了上述问题。

        解决方法来源:

wsl centos7:Failed to get D-Bus connection: Operation not permittedwsl 运行的 centos 7,使用 service 命令提示 Failed to get D-Bus connection: Operation not permitted 错误,无法运行。icon-default.png?t=O83Ahttps://blog.hlhasd.com/archives/resource-sharing/tool/28/864/        解决方法的命令:

mv /usr/bin/systemctl /usr/bin/systemctl.old
curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py > /usr/bin/systemctl
chmod +x /usr/bin/systemctl

        自己对这个方法的解释:

  • mv /usr/bin/systemctl /usr/bin/systemctl.old:这条命令将现有的 systemctl 二进制文件重命名为 systemctl.old,相当于对其进行备份。
  • curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py > /usr/bin/systemctl:这条命令使用 curl 命令从指定的 URL 下载一个 Python 脚本 (systemctl.py),并将其保存到 /usr/bin/systemctl,替换掉原来的 systemctl;该 Python 脚本是一个 systemctl 的替代品,专门为在 Docker 容器中模拟 systemctl 功能开发;> 符号用于将下载的文件输出到 /usr/bin/systemctl。(注意:上述命令可以直接自己先使用其中的url下载好py文件然后复制到容器相应目录中就行)
  • chmod +x /usr/bin/systemctl:这条命令为 /usr/bin/systemctl 添加可执行权限,使其可以作为可执行文件运行。

在上述操作完之后,再次进行MySQL8.0的下载安装:我参照的博客是:

【MySQL】在CentOS7环境下----手把手教你安装MySQL详细教程(附带图例详解!!)_centos7安装mysql教程-CSDN博客

按照上述方法下载完之后,运行systemctl start mysqld命令出现ERROR:systemctl:Unit mysql.service not found.的错误,首先是使用find / -name mysqld命令找到mysqld文件所在的路径然后将这个文件复制到 /etc/init.d/mysqld,使用的命令是cp 当前路径  /etc/init.d/mysqld。之后再运行systemctl start mysqld命令就成功了!!!@~~~。

Logo

一站式 AI 云服务平台

更多推荐