2017-03-23 13 views
1

Ubuntu 14.04でCudaサポートをインストールするためのコマンドがいくつかあります。私はその後、私は実行中のコンテナにそれを行うと、Dockerコマンドはコンテナの実行に成功しましたが、Dockerファイルで失敗します

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を使用してください!

    のinvoke-rc.dの:私はDockerfileからそれを行うと

  • 、それはのような実行時エラーの多くを取得する方針-rc.dのは、力のリロードの実行を否定しました。

    invoke-rc.d:policy-rc.d:startの実行を拒否しました。

私は明確にしたい - それは私がコンテナ上のbashを実行し、Dockerfileを段階的にコマンド従うとき成功しますが、RUNがdocker buildを使用して、dockerfileにコマンドと私は同じ実行すると失敗します。

どのような問題があり、それを解決するにはどのようなアイデアですか?

私はいくつかの場所で彼らのdockerfileに次のコマンドを追加し、人々を見ていることに注意したい:よりエレガントなものは何もありません

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

を?実行時に異なるアクセス許可についてではないdocker builddocker run -it

答えて

-1
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 

ちょうどそれがdocker build ありがとうで動作します上記のコマンドでソフトウェア名を置き換えます!

+0

このコマンドはどのように 'policy-rc.d'問題を解決しますか? –

0

Hereは、あなたが直面している問題を根本的に解決する良い投稿です。

短い道

  1. RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.dことで問題が解決しない場合は、privilegedオプションを使用してドッキングウィンドウコンテナを実行してみて問題 OR

  2. を解決する必要があります。このように、docker run --privileged -d -ti DOCKER_IMAGE:TAG

理想的には、私は、そのテストベッド用コンテナがない限りprivilegedオプションを指定してコンテナを実行することはお勧めしません。特権付きのドッカーコンテナを実行する理由は、コンテナにすべての機能を提供し、強制されるすべての制限を解除します。言い換えれば、コンテナは、ホストができるすべてのことを行うことができます。しかし、これは良い習慣ではありません。これはホストマシンから分離するドッカーの目的に反する。

これを実行する理想的な方法は、達成したいことに基づいてドッカーコンテナのset capabilitiesです。これを検索すると、適切なcapabilityをドッキング用のコンテナとして提供するのに役立ちます。

+1

ドッカーを '--privileged'モードで実行することはお勧めできません。ドッカーは、ホストマシンから分離することを意味します。 –

+0

私はあなたに@chintanthakarに同意します。おそらく最善の方法ではなく、 '--priviledged'で実行することをお勧めします。私は、あなたがやろうとしていることに基づいてコンテナ内に機能を設定するのが最善の策だと思います –

関連する問題