/docker

Dockerfile templates for creating RAPIDS Docker Images

Primary LanguageDockerfileApache License 2.0Apache-2.0

 docker

This repository contains the source files for rapidsai Docker images

Table of Contents

Image Types

There are currently three different types of Docker images, which follow the same conventions provided by the NVIDIA CUDA Docker images, and allow users to use the RAPIDS images as a drop-in replacements for their CUDA images. Each type is supported on a combination of OS, Python version, and CUDA version which produces a variety of available image types. The different types are described below:

Type Description Target Audience
base Extends the corresponding CUDA image to add conda and the RAPIDS conda packages in a rapids conda environment Users that do not need examples or the need to modify and/or build RAPIDS sources
runtime Extends the base image to add the RAPIDS Jupyter notebooks, all dependencies of the notebooks installed to the rapids conda environment, and runs a Jupyter server as the default Docker ENTRYPOINT Users interested in exploring the example notebooks
devel Extends the corresponding CUDA image to add the full RAPIDS build and test toolchain (gcc, build tools, etc.) to the system and/or rapids environment as well as the notebooks, their dependencies, and runs a Jupyter server as the default Docker ENTRYPOINT Users that are doing active development on RAPIDS and need to build and test their changes

At a high-level, the differences between base, runtime, and devel is the way RAPIDS is installed. base and runtime are identical in how RAPIDS is installed, with the only difference between them is that runtime has (many) more 3rd-party packages installed to support the notebooks. devel is completely different in that RAPIDS is built from source in the container and installed into the rapids environment using an install command. Because of these differences, we often refer to the images as base & runtime and devel.

Image Locations

RAPIDS releases both stable and nightly images in the following repositories. stable releases match our conda stable version releases. While our nightly releases are generated every night from the latest WIP development branch. Below is a table of their repositories and tag lists:

Type stable Repository nightly Repository
base rapidsai/rapidsai rapidsai/rapidsai-nightly
runtime rapidsai/rapidsai rapidsai/rapidsai-nightly
devel rapidsai/rapidsai-dev rapidsai/rapidsai-dev-nightly

Extending Images

Like any Docker image, the RAPIDS images can be extended to suit the needs of individual teams. Whether it is to add custom libraries, change security settings, or other customizations; using FROM and our RAPIDS images allows users to customize the container, but easily update to the latest versions with a new docker build.

Custom Token Example

For example, the runtime and devel images use an empty token for securing the Jupyter notebook server. While this is a fast easy solution for dev and exploratory environments, those in production environments may need more security.

Using the following short Dockerfile users can leverage the existing RAPIDS images and build a custom secure image:

FROM rapidsai/rapidsai-nightly:cuda10.2-runtime-ubuntu18.04-py3.7
RUN sed -i "s/NotebookApp.token=''/NotebookApp.token='secure-token-here'/g" /opt/docker/bin/entrypoint_source

Once built, the resulting image will be secured with the new token.

This example can be repurposed by replacing the sed command with other commands for custom libraries or settings.

Building Images

The Dockerfiles can be built from the root project directory with the following command:

docker build -f generated-dockerfiles/ubuntu18.04-base.Dockerfile context/

If no build arguments are specified, the image will be built with the OS specified in the file name (i.e. ubuntu18.04 or centos7) and the default Python and CUDA versions specified in settings.yaml.

You can override these defaults by specifying Docker build arguments:

docker build --build-arg CUDA_VER=10.2 --build-arg PYTHON_VER=3.7 -f generated-dockerfiles/centos7-base.Dockerfile context/

The Ubuntu images can take an additional LINUX_VER build argument to use other supported Ubuntu versions:

docker build --build-arg CUDA_VER=10.2 --build-arg PYTHON_VER=3.7 --build-arg LINUX_VER=ubuntu16.04 -f generated-dockerfiles/ubuntu18.04-base.Dockerfile context/

Contributing

Please see CONTRIBUTING.md for details on how to contribute to this repo.