У меня есть команда, которую я запускаю, для установки поддержки Cuda в Ubuntu 14.04. Для этого я запускаю следующую команду, представляющую собой серию комбинированных команд:
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 <my new image name> bash
и все получается!Когда я делаю это из Dockerfile, он получает много ошибок времени выполнения, таких как:
invoke-rc.d: policy-rc.d запретил выполнение принудительной перезагрузки.
invoke-rc.d: policy-rc.d отклонил запуск start.
Я хочу уточнить - это удается, когда я запускаю bash в контейнере и шаг за шагом выполняю команды Dockerfile, но терпит неудачу, если я выполняю то же самое, что и команды RUN в файле docker, используя docker build
.
Любая идея, в чем может быть проблема и как ее решить?
Хочу отметить, что я видел кое-где людей, которые добавляют в свой dockerfile следующую команду:
RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d
Нет ничего изящнее? Разве это не разные разрешения при запуске docker build
против docker run -it
?