如何解决“ invoke-rc.d:policy-rc.d拒绝执行启动”。构建容器Ubuntu 14.04并安装apache2时?

zwi*_*ion 3 apache docker

我正在尝试在构建映像过程之后安装apache2。这是我在Dockerfile中使用的代码。

FROM ubuntu:14.04
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections

ENV DEBIAN_FRONTEND noninteractive

RUN sudo apt-get update
RUN sudo apt-get install -y apache2
Run Code Online (Sandbox Code Playgroud)

完成此过程后,我安装了apache,但出现了以下错误(终端中的红色显示)

...
invoke-rc.d: policy-rc.d denied execution of start.
...
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?如果有问题。

Nik*_*tre 5

是一篇很好的文章,试图找出导致您面临的问题的根本原因。

较短的方法

  1. RUN printf "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d 应该解决您的问题,或者

  2. 如果那不能解决问题,请尝试运行带有privileged选项的docker容器。像这样,docker run --privileged -d -ti DOCKER_IMAGE:TAG

理想情况下,privileged除非是测试台容器,否则我不建议带选项运行容器。运行具有特权的Docker容器的原因是赋予了该容器所有的功能,同时也消除了所有强制实施的限制。换句话说,容器可以完成主机可以做的几乎所有事情。但这不是一个好习惯。这违反了将docker与主机隔离的目的。

理想的方法是set capabilities根据要实现的目标对Docker容器进行操作。谷歌搜索应该可以帮助您提供适合capability您的docker容器的工具。