centos7:不允许操作 - mysql

centos7: Operation not permitted - mysql

我已经在 centOS 中安装了 mysql,现在,想要启动 mysql-server。但是,我得到了那个错误:

# 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 .

但我仍然遇到同样的错误。

这个我也看了

有什么想法吗?

谢谢, 西奥.

我认为是 Dockerfile 或 运行 命令的问题

看来你 Dockerfile 的问题就在这一行

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

这里是MySQLcentos 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

开始-停止

我可以 运行 mysql 很好地使用 docker-systemctl-replacement script which emulates "systemctl" commands without an active systemd daemon. You can look at that at the docker-systemctl-images 示例。