centos7:不允许操作-mysql

mwkjh3gx  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(396)

我已经在centos上安装了mysql,现在想启动mysql服务器。但是,我得到一个错误:


# systemctl start mysqld

Failed to get D-Bus connection: Operation not permitted

为了修复它,我创建了一个dockerfile,如图所示

FROM centos:7
MAINTAINER theodosiostziomakas <mymail@gmail.com>
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i 
== systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]

然后运行它来创建一个图像。

$ docker build --rm -t local/c7-systemd .

但我还是犯了同样的错误。
我还研究了这个提议的解决方案
有什么想法吗?
谢谢,西奥。

wnavrhmk

wnavrhmk1#

我相信dockerfile或run命令的问题
你dockerfile的问题似乎就在这一行

RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \

这里是mysql centos dockerfile


# Starting from base CentOS image

FROM centos:7

# Enabling SystemD

ENV container docker

RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]

# Enabling EPEL & Remi repo

# RUN yum install -y epel-release && \

# yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm

# Mysql repo & installion

RUN yum install -y https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm && \
yum install -y mysql mysql-server

RUN chkconfig --level 345 mysqld on
RUN systemctl enable  mysqld

VOLUME [ "/var/lib/mysql" ]

# Port Expose

EXPOSE 3306
CMD ["/usr/sbin/init"]

现在,下一步是运行

--privileged is not enough, you also need to mount cgroup

这是命令

docker run --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro -it adilm7177/centos-mysql

你可以建立你自己的或者你可以从docker注册表中提取上面的图片,我在测试期间建立并推送它。

docker push adilm7177/centos-mysql:latest


更新:

RUN systemctl enable  mysqld

加上这个后,我可以开始停止使用 systemctl

7rtdyuoh

7rtdyuoh2#

我可以用docker systemctl替换脚本运行mysql,该脚本模拟“systemctl”命令,而不需要活动的systemd守护进程。您可以在docker systemctl图像示例中看到这一点。

相关问题