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 -itdocker 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 build
与docker 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
一起工作谢谢!