0

我尝试在 docker 容器中安装 httpd,并尝试通过 docker 中的 systemctl 重新启动 httpd。但我得到了一个像下面这样的例外

在此处输入图像描述

根据我的分析,在 docker 基础镜像中默认未启用 systemctl,专家建议如下配置。

    FROM centos:7

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"]

我尝试了同样的方法,但仍然没有运气。我尝试使用centos/systemd作为我的基本映像的另一个选项,但没有运气。这是我正在尝试的示例 docker 文件。

FROM centos:7
    
RUN  yum -y install httpd php php-mysql php-gd mariadb-server php-xml php-intl mysql weget

RUN systemctl restart httpd.service

RUN  systemctl enable httpd.service
RUN  systemctl start mariadb 

RUN systemctl enable mariadb 

# RUN  mysql -u root -p -u root

EXPOSE 80

有人请给我建议吗?还有其他以不同方式实现相同目标的可能性吗?

参考:

Docker CentOS systemctl 不允许 https://forums.docker.com/t/systemctl-status-is-not-working-in-my-docker-container/9075/2

4

0 回答 0