Docker命令成功运行容器,但在Dockerfile上失败

我有一些运行的命令,用于在Ubuntu 14.04上安装Cuda支持。 为了做到这一点,我运行以下命令,这是一系列组合的命令:

apt-get install -y software-properties-common && add-apt-repository -y ppa:graphics-drivers/ppa && apt-get --purge remove "nvidia*" && apt-get --purge remove "cuda*" && cd Downloads && dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb && apt-get -y update && apt-get -y upgrade && apt-get install -y cuda 
  • 当我在一个正在运行的容器上,即我的Dockerfile只包含命令FROM ubuntu:14.04 ,然后我使用docker run -it docker run -it <my new image name> bash ,它成功了!

  • 当我从Dockerfile中执行时,会得到很多运行时错误,例如:

    invoke-rc.d:policy-rc.d拒绝执行强制重新加载。

    invoke-rc.d:policy-rc.d拒绝执行start。

我想澄清一下 – 当我在容器上运行bash并按照Dockerfile命令一步步执行时,它会成功,但是如果使用docker docker build执行与dockerfile中的RUN命令相同的操作,则会失败。

任何想法可能是什么问题,以及如何解决?

我想说明的是,我在某些地方看到,在dockerfile中添加了以下命令:

 RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d 

没有什么更优雅的? 是不是关于运行docker builddocker run -it时,不同的权限?

 RUN \ apt-get update -qq && \ apt-get install -y net-tools --no-install-recommends --allow-unauthenticated && \ apt-get clean autoclean && \ apt-get autoremove -y && \ rm -rf /var/lib/apt /var/lib/dpkg /var/lib/cache /var/lib/log 

只需在上面的命令中replace您的软件名称,它将与docker build一起工作谢谢!