Check host is running at least Ubuntu 16.04
$ cat /etc/issue
Ubuntu 16.04 LTS \n \l
Check host has CUDA capable card with compute capability 3.0 or higher
$ lspci | grep -i nvidia
Install a CUDA capable driver appropriate to the gpu
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get update
$ sudo apt-get install nvidia-384
Install Docker
$ sudo apt-get install apt-transport-https ca-certificates \
> curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
> sudo apt-key add -
$ sudo add-apt-repository \
> "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
> $(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce
Install Nvidia docker runtime
$ curl -s -L \
> https://nvidia.github.io/nvidia-docker/gpgkey | \
> sudo apt-key add -
$ curl -s -L \
> https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64/nvidia-docker.list | \
> sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2
$ sudo pkill -SIGHUP dockerd
Validate nvidia-docker works
$ sudo docker run --runtime=nvidia --rm nvidia/cuda:8.0-cudnn6-runtime-ubuntu14.04 nvidia-smi
To run tensorflow in a container need to use nvidia/cuda:8.0-cudnn6-runtime-ubuntu14.04
as base
Example Dockerfile
FROM nvidia/cuda:8.0-cudnn6-runtime-ubuntu14.04
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential libcupti-dev python3-pip
ENV CUDA_HOME /usr/local/cuda
ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:$CUDA_HOME/lib64
ENV PATH $CUDA_HOME/bin:$PATH
RUN pip3 install --upgrade pip \
&& /usr/local/bin/pip3 install tensorflow-gpu