簡體   English   中英

docker + systemctl不允許操作systemctl

[英]Operation not permitted systemctl with docker + systemctl

Docker文件

FROM centos:7
ENV container docker
VOLUME ["/sys/fs/cgroup"]
RUN yum -y update
RUN yum install -y httpd
RUN systemctl start httpd.service
ADD . /code
WORKDIR /code

docker-compose.yml

version: '2'
services:
web:
   privileged: true
   build: .
   ports:
    - "80:80"
   volumes:
    - .:/code

命令

docker-compose build

錯誤

步驟6:運行systemctl start httpd.service --->在5989c6576ac9中運行?[91m無法獲得D-Bus連接:不允許操作?[0m?[31mERROR?] [0m:服務'web'生成失敗:命令' / bin / sh -c syste mctl start httpd.service'返回了非零代碼:1

Obs :在Windows 7上運行:(

有小費嗎?

centos docker映像存儲庫中所述 ,默認情況下Systemd不處於活動狀態。 為了使用systemd,您將需要包含類似於以下示例Dockerfile的文本:

FROM centos:7
MAINTAINER "you" <your@email.here>
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"]

該Dockerfile刪除了許多可能導致問題的單位文件。 從這里,您就可以構建基礎映像了。

$ docker build --rm -t local/c7-systemd .

為了使用上面創建的啟用了systemd的基本容器,您需要將Dockerfile更改為:

FROM local/c7-systemd
ENV container docker
VOLUME ["/sys/fs/cgroup"]
RUN yum -y update
RUN yum install -y httpd
RUN systemctl start httpd.service
ADD . /code
WORKDIR /code

對於同一問題,我創建了一個docker-systemctl-replacement ,它將執行“ systemctl啟動httpd.service”將要執行的步驟...,但不需要運行SystemD。 只需說“ systemctl.py啟動httpd.service”,看看是否可行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM