Docker - nvidia-docker Image Building
Updated at 2017-02-21 11:07
Building a NVIDIA CUDA enable Docker image. I'll be building an image to run darknet machine learning library in this example.
- Connect to a build machine with working
nvidia-docker
if you don't have it locally.
ssh user@xxx.xxx.xxx.xxx
- Try out your hypothesis how to build the image; base image, commands, etc.
nvidia-docker pull nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04
nvidia-docker history nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04
nvidia-docker rm `nvidia-docker ps -aq`
nvidia-docker run -it --rm --name cccc nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04 /bin/bash
# try out what you plan on doing...
- Create a Dockerfile after you get it in the state you want.
FROM nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04
MAINTAINER Ruksi <me@ruk.si>
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 CUDA_ROOT=/usr/local/cuda/bin
RUN apt-get update --fix-missing && apt-get install -y \
libopencv-dev \
python-opencv \
git
RUN git clone https://github.com/pjreddie/darknet.git /darknet
WORKDIR /darknet
RUN sed -i'' -- 's/GPU=0/GPU=1/g' Makefile
RUN sed -i'' -- 's/CUDNN=0/CUDNN=1/g' Makefile
RUN sed -i'' -- 's/OPENCV=0/OPENCV=1/g' Makefile
RUN make
ENTRYPOINT []
CMD ["/bin/bash"]
- Build the docker image
# Check latest commit id at https://github.com/pjreddie/darknet
b61bcf5
# Build the Dockerfile to an image.
nvidia-docker build -t ruksi/darknet:gpu-b61bcf5 .
# Check that it works.
nvidia-docker run --rm ruksi/darknet:gpu-b61bcf5 /darknet/darknet
# => usage: /darknet/darknet <function>
# Push to Docker repository.
`aws ecr get-login --region eu-west-1` # if required for access
nvidia-docker push ruksi/darknet:gpu-b61bcf5