gpt4 book ai didi

docker - 不允许使用 docker + systemctl 操作 systemctl

转载 作者:IT老高 更新时间:2023-10-28 21:38:29 28 4
gpt4 key购买 nike

Dockerfile

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?[91mFailed to get D-Bus connection: Operation not allowed?[0m?[31mERROR?[0m: Service 'web' failed to build: The command '/bin/sh -c systemctl start httpd.service' 返回一个非零代码:1

Obs:在 Windows 7 上运行 :(

有什么建议吗?

最佳答案

centos docker image repository 中所述, 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 - 不允许使用 docker + systemctl 操作 systemctl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37500158/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com