Edited at

nvidia-docker+Dockerfileなコンテナの立て方


とどのつまり

予めDockerfileをしっかり書きたい、しかしnvidia-docker(2)使うときは、

# Test nvidia-smi with the latest official CUDA image

$ docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi

みたいにnvidia製のイメージを使わないとうまくいかなそう、どうすればいいの...?って思ったのでいろいろやってみた

結論、

$ docker run --runtime=nvidia オリジナルのDockerfileをビルドしたイメージ

でいけた。ただしDockerfileは本家に倣う必要あり。


ホスト環境


  • ubuntu16.04

  • cuda9.0

  • nvidia-docker2


作りたいコンテナ


  • ubuntu16.04

  • cuda9.0 + cudnn7

  • とりあえず nvidia-smi が動いてほしい


やったこと


Dockerfileを書く



  • 本家nvidia/cudaのDockerfileを拾ってきました。



  • 変な環境変数?等あったので適当にコメントアウトしつつ書き換えました


# ARG IMAGE_NAME

# FROM ${IMAGE_NAME}:9.0-devel-ubuntu16.04
FROM nvidia/cuda:9.0-devel-ubuntu16.04
# LABEL maintainer "NVIDIA CORPORATION <cudatools@nvidia.com>"
ENV CUDNN_VERSION 7.5.0.56
# LABEL com.nvidia.cudnn.version="${CUDNN_VERSION}"
RUN apt-get update && apt-get install -y --no-install-recommends \
libcudnn7=$CUDNN_VERSION-1+cuda9.0 \
libcudnn7-dev=$CUDNN_VERSION-1+cuda9.0 && \
apt-mark hold libcudnn7 && \
rm -rf /var/lib/apt/lists/*


イメージを作る


  • 書いたDockerfileがあるディレクトリで

$ docker build ./ -t cuda-9.0-cudnn7-devel



  • -t オプションで適当にcuda~~~っていう名前をつけました


じっこう!

$ docker run --runtime=nvidia --rm cuda-9.0-cudnn7-devel nvidia-smi


以上!

1マイクロミリバイト以上の情報を得たらいいねしよう☆