Я начинаю работать с docker
для автоматизации envorinments, тогда я пытаюсь построить простой LAMP
поэтому Dockerfile
является следующее:Docker Lamp Centos7: '/ bin/sh -c systemctl start httpd.service' возвратил ненулевой код: 1
FROM centos:7
ENV container=docker
RUN yum -y swap -- remove systemd-container systemd-container-libs -- install systemd systemd-libs
RUN yum -y update; yum clean all; \
(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" ]
RUN yum -y update && yum clean all
RUN yum -y install firewalld httpd mariadb-server mariadb php php-mysql php-gd php-pear php-xml php-bcmath php-mbstring php-mcrypt php-php-gettext
#Enable services
RUN systemctl enable httpd.service
RUN systemctl enable mariadb.service
#start services
RUN systemctl start httpd.service
RUN systemctl start mariadb.service
#Open firewall ports
RUN firewall-cmd --permanent --add-service=http
RUN firewall-cmd --permanent --add-service=https
RUN firewall-cmd --reload
EXPOSE 80
CMD ["/usr/sbin/init"]
поэтому, когда я создать образ
docker build -t myimage .
Затем, когда я запускаю код, который я получаю следующую заблуждаться:
The command '/bin/sh -c systemctl start httpd.service' returned a non-zero code: 1
Когда я вхожу в интерактивном режиме (прыжки команды после RUN systemctl start httpd.service
и rebuidling изображение):
docker run -t -i myimage /bin/bash
И после попытки запустить вручную службы httpd
я получаю ошибки:
Failed to get D-Bus connection: No connection to service manager.
так, я не знаю, что я делаю неправильно?
Я понимаю, что докер не поддерживает автоматическую систему, но вы можете заставить ее работать с правильным файлом докеров. См. Https://hub.docker.com/r/centos/systemd/. Похоже, что требуется конкретный образ, но я так не думаю, учитывая то, что я видел на другой странице, которую я должен был бы занести в закладки! Во всяком случае, я сам не пробовал, потому что возвращаюсь в LXC. Systemd работает из коробки с контейнером LXC CentOS, и вы можете даже «yum install openssh-server» и SSH в контейнер, если хотите. – Nagev