여기에 설명된 대로 centos+systemd Docker 컨테이너를 실행하려고 합니다.https://hub.docker.com/_/centos/.
docker build --rm -t local/c7-systemd c7-systemd
도커파일:
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"]
docker build --rm -t local/c7-systemd-httpd c7-systemd-httpd
도커파일:
FROM local/c7-systemd
RUN echo "myproxy" >> /etc/yum.conf
RUN yum -y install httpd; yum clean all; systemctl enable httpd.service
EXPOSE 80
CMD ["/usr/sbin/init"]
docker run -ti --cap-add SYS_ADMIN --security-opt seccomp:unconfined -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 local/c7-systemd /bin/bash
나도 그것을 시도했지만 --privileged
이것을 얻을 때마다 다음과 같습니다.
[root@e29ecfb082d8 /]# systemctl status
Failed to get D-Bus connection: Operation not permitted
저는 Cygwin, Docker 버전 18.03.1-ce, 빌드 9ee9f40(Windows용 Docker)에서 실행하고 있습니다.
이 구성으로 작동하는 centos7+systemd 컨테이너를 얻을 수 있는 방법이 있는지 알려주시겠습니까?
답변1
작업 컨테이너가 있습니다.https://hub.docker.com/r/centos/systemd/
docker build --rm --no-cache -t c7-systemd-off c7-systemd-off
도커파일:
FROM centos/systemd
RUN echo "myproxy" >> /etc/yum.conf
RUN yum -y install httpd; yum clean all; systemctl enable httpd.service
EXPOSE 80
CMD ["/usr/sbin/init"]
docker run --privileged --name c7 -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 -d c7-systemd-off
docker exec -it c7 /bin/bash
답변2
때를할 수 있는컨테이너에서 서비스를 실행하려면 systemd를 사용하세요. 동의합니다.노드의 리뷰이렇게 하면 안 됩니다. CentOS가 필요하지 않은 경우 Apache의 공식 이미지 중 하나를 사용할 수 있습니다.
https://hub.docker.com/_/httpd
CentOS가 필요한 경우 Docker Hub에서도 사용할 수 있습니다.
https://hub.docker.com/r/centos/httpd-24-centos7
~에서원천Red Hat 자체는 systemd를 사용하여 실행하지 않는다는 것을 알 수 있습니다.
FROM centos:centos7
# RHSCL httpd24 image.
#
# Volumes:
# * /opt/rh/httpd24/root/var/www - Datastore for httpd
# * /var/log/httpd24 - Storage for logs when $HTTPD_LOG_TO_VOLUME is set
# Environment:
# * $HTTPD_LOG_TO_VOLUME (optional) - When set, httpd will log into /var/log/httpd24
EXPOSE 80
EXPOSE 443
COPY run-*.sh /usr/local/bin/
RUN mkdir -p /var/lib/httpd24
COPY contrib /var/lib/httpd24/
RUN rpmkeys --import file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 && \
yum -y --setopt=tsflags=nodocs install https://www.softwarecollections.org/en/scls/rhscl/httpd24/epel-7-x86_64/download/rhscl-httpd24-epel-7-x86_64.noarch.rpm && \
yum install -y --setopt=tsflags=nodocs gettext hostname bind-utils httpd24 httpd24-mod_ssl && \
yum clean all
# When bash is started non-interactively, to run a shell script, for example it
# looks for this variable and source the content of this file. This will enable
# the SCL for all scripts without need to do 'scl enable'.
ENV BASH_ENV=/var/lib/httpd24/scl_enable \
ENV=/var/lib/httpd24/scl_enable \
PROMPT_COMMAND=". /var/lib/httpd24/scl_enable"
VOLUME ["/opt/rh/httpd24/root/var/www"]
VOLUME ["/var/log/httpd24"]
ENTRYPOINT ["/usr/local/bin/run-httpd24.sh"]
CMD ["httpd", "-DFOREGROUND"]