Code Monkey home page Code Monkey logo

dask-docker's Introduction

Dask docker images

Build Status

Docker images for dask-distributed.

  1. Base image to use for dask scheduler and workers
  2. Jupyter Notebook image to use as helper entrypoint

This images are built primarily for the Dask Helm Chart but they should work for more use cases.

How to use / test

A helper docker-compose file is provided to test functionality.

docker-compose up

Open the notebook using the URL that is printed by the output so it has the token.

On a new notebook run:

from dask.distributed import Client
client = Client('scheduler:8786')
client.ncores()

It should output something like this:

{'tcp://172.23.0.4:41269': 4}

Cross building

The images can be cross-built using docker buildx bake. However buildx bake does not listen to depends_on (since in theory that is only a runtime not a build time constraint docker/buildx#447). To work around this we first need to build the "base-notebook" image.

# If you have permission to push to daskdev/
docker buildx bake --progress=plain --set *.platform=linux/arm64,linux/amd64 --push base-notebook
docker buildx bake --progress=plain --set *.platform=linux/arm64,linux/amd64 --push
# If you don'tset DOCKERUSER to your dockerhub username.
export DOCKERUSER=holdenk
docker buildx bake --progress=plain --set *.platform=linux/arm64,linux/amd64 --set base-notebook.tags.image=${DOCKERUSER}/base-notebook:lab-py38 --push base-notebook
docker buildx bake --progress=plain --set *.platform=linux/arm64,linux/amd64 --set scheduler.tags=${DOCKERUSER}/dask --set worker.tags=${DOCKERUSER}/dask --set notebook.tags=${DOCKERUSER}/dask-notebook --set base-notebook.tags=${DOCKERUSER}/base-notebook:lab-py38 --set notebook.args.base=${DOCKERUSER} --push

Environment Variables

The following environment variables are supported for both the base and notebook images:

  • $EXTRA_APT_PACKAGES - Space separated list of additional system packages to install with apt.
  • $EXTRA_CONDA_PACKAGES - Space separated list of additional packages to install with conda.
  • $EXTRA_PIP_PACKAGES - Space separated list of additional python packages to install with pip.

The notebook image supports the following additional environment variables:

  • $JUPYTERLAB_ARGS - Extra arguments to pass to the jupyter lab command.

Building images

Docker compose provides an easy way to building all the images with the right context

docker-compose build

# Just build one image e.g. notebook
docker-compose build notebook

Releasing

Building and releasing new image versions is done automatically via Travis CI. When new commits are pushed to the main branch images are built with the dev tag and pushed to Docker Hub.

When a new version of Dask is released a PR should be raised to bump the versions in the Dockerfiles and then once that has been merged a new tag matching the Dask version should be pushed. Travis will then build the images and push them with version tags and update latest too.

$ git commit --allow-empty -m "bump version to x.x.x"
$ git tag -a x.x.x -m 'Version x.x.x'
$ git push upstream main --tags

dask-docker's People

Contributors

abduhbm avatar alanderex avatar amcnicho avatar asyd avatar danielfrg avatar detroyejr avatar dimitar-petrov avatar github-actions[bot] avatar holdenk avatar ian-r-rose avatar jacobtomlinson avatar jakirkham avatar javabrett avatar jcrist avatar jeffreybreen avatar jorandox avatar jrbourbeau avatar kmadathil avatar mrocklin avatar ogrisel avatar raybellwaves avatar rileymcdowell avatar rmccorm4 avatar tautvis avatar tomaugspurger avatar tonywangcn avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.