質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2044閲覧

OpenCVのDockerfile化(cuda使用)

ks130

総合スコア6

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/27 01:22

編集2021/05/27 01:23

#実行したいこと
OpanCVを用いたGPUリソースを使った画像処理をするためのインフラの用意をしています。
具体的には、CUDAを含むOpenCV環境をDockerコンテナ上に構築したく、それ用のDockerfileを作成しています。
サーバー上に同様の環境を構築した際は以下サイトの手順で問題なく構築できました。
https://towardsdatascience.com/opencv-cuda-aws-ec2-no-more-tears-60af2b751c46

ホストOS、コンテナOSはubuntu18.04を使用しています。

#質問(2つあります)

①Dockerfile作成時に上記サイトのStep1にあるように reboot を実行するのですが、Dockerfile内ではどのように記述したら再現できるのでしょうか?rebootしなくても構築可能であればその方法を知りたいです。

例:以下に示す最後の行のrebootの実行をdockerfile内で実施したい

sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential cmake unzip pkg-config sudo apt-get install gcc-6 g++-6 sudo apt-get install screen sudo apt-get install libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev sudo apt-get install libjpeg-dev libpng-dev libtiff-dev sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt-get install libxvidcore-dev libx264-dev sudo apt-get install libopenblas-dev libatlas-base-dev liblapack-dev gfortran sudo apt-get install libhdf5-serial-dev sudo apt-get install python3-dev python3-tk python-imaging-tk sudo apt-get install libgtk-3-dev sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update sudo apt-get install nvidia-driver-418 sudo reboot

②CUDAのインストールスクリプト(cuda_10.0.130_410.48_linux.run)が対話式のスクリプトになっています。EULAの契約書面が表示されて抜けるのに ctrl+c を実行する必要があり、Dockerfileでこの操作が実行できません。どのようにしたら上記スクリプト(ctrl+c)をDockerfile内で実行することができるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Dockerの「reboot」についての考え方

1つめの質問については、Docker では reboot という概念が存在しません。

Dockerfile で Docker イメージを構築する時に、 RUN 命令で何かをインストールすると、元になるイメージ(ご質問内容から、今回は ubuntu:18.04 だと思います) の上に、ファイルを追加していくものです。

Docker を使わない一般的なインストールであれば、サーバそのものを再起動する手順がある場合もあります。これは、環境を反映したり、プログラムの実行やデーモンを起動するためです。

対して、 Docker では、 Docker イメージを構築した段階では、何もプロセスが動いていません。そのため、「インストールのための reboot」という概念は、 Docker を使う上では存在しません。

ですので「sudo reboot」を実行しなくても、既に何かしらがインストールされた状態の Docker イメージは出来上がります。

(ここまでは一般的な話です)

CUDA のセットアップについて

通常のサーバと Docker コンテナでは、プロセスの起動手順が異なります。たとえば通常のサーバでは systemctl などを使って自動起動するかもしれませんが、Docker では systemctl がそのまま使えないため、何らかの実行用スクリプトを準備する必要があります。

そのため、多くの場合、通常のサーバでのインストール手順と、Docker のインストール手順が異なるのが一般的です。

私はこのあたりは詳しくないのですが、たとえば、 CUDA の Docker でのセットアップ方法を検索しますと このような記事 が検索結果から出てきますように、インストールには工夫が必要なように見受けられます。

また、Docker で CUDA を使いたい場合は、 nvidia:cuda イメージ https://hub.docker.com/r/nvidia/cuda/ を使うと、Docker イメージを pull した段階で、EULA に同意した状態となると、Docker Hub のドキュメント に記述があります。

The images are governed by the following NVIDIA End User License Agreements. By pulling and using the CUDA images, you accept the terms and conditions of these licenses.

ご質問にある EULA の対処方法は何かしらあるとは思います。ですが、今取り組まれている、通常のサーバと同じ方法で Docker にインストールするのではなく、既に提供されている Docker イメージを使ったインストール方法を模索されてはいかがでしょうか。

投稿2021/05/29 21:54

編集2021/05/29 21:57
zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問