systemd 는 docker 용기 에서 사용 합 니 다.

centos 7.2 용기 에서 httpd 서 비 스 를 실행 하 는 것 을 예 로 들 면 기본적으로 직접 실행 합 니 다
[root@b0b2a3ed40d6 /]# systemctl start httpd.service
Failed to get D-Bus connection: Operation not permitted

인터넷 에서 찾 은 해결 방법:
  • Dockerfile 을 만 들 고 기본 미 러 를 만 듭 니 다
  • FROM  centos:7.2 
    MAINTAINER [email protected]
    
    ENV container docker
    RUN yum -y update && \
        yum clean all && \
        yum -y install systemd && \
        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"]
    CMD ["/usr/sbin/init"]
    [root@dev-ops ~]# docker build -t centos_test_systemctl .

    2.위의 미 러 를 바탕 으로 apache 미 러 를 구축 합 니 다.
    FROM centos_test_systemctl
    MAINTAINER [email protected]
    
    RUN yum -y install httpd && \
        yum clean all && \
        systemctl enable httpd.service
    
    EXPOSE 80
    CMD ["/usr/sbin/init"]
    [root@dev-ops ~]# docker build -t centos_test_httpd .

    3.그리고 용기 시동
    [root@dev-ops ~]# docker run --privileged -it -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 centos_test_httpd

    좋은 웹페이지 즐겨찾기