Docker 镜像

示例 Docker 镜像维护在 https://github.com/dask/dask-docker

每个镜像在基于Debian镜像的Miniconda安装之上安装了完整的Dask conda环境(包括分布式调度器)、Numpy和Pandas。

这些图片很大,大约1GB。

  • ghcr.io/dask/dask: 这是一个包含完整 Dask conda 包(包括分布式调度器)、Numpy 和 Pandas 的普通 debian + miniconda 镜像。该镜像大小约为 1GB。

  • ghcr.io/dask/dask-notebook: 这是基于 Jupyter base-notebook 镜像 ,因此它既适合作为 Jupyter 服务器正常使用,也适合作为 JupyterHub 部署的一部分。它还包括如上所述的匹配的 Dask 软件环境。该镜像大小约为 2GB。

示例

以下是一个关于专用虚拟网络的简单示例

docker network create dask

docker run --network dask -p 8787:8787 --name scheduler ghcr.io/dask/dask dask-scheduler  # start scheduler

docker run --network dask ghcr.io/dask/dask dask-worker scheduler:8786 # start worker
docker run --network dask ghcr.io/dask/dask dask-worker scheduler:8786 # start worker
docker run --network dask ghcr.io/dask/dask dask-worker scheduler:8786 # start worker

docker run --network dask -p 8888:8888 ghcr.io/dask/dask-notebook  # start Jupyter server

然后,在笔记本环境中,你可以像这样连接到 Dask 集群:

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

可扩展性

用户可以通过填充环境变量 EXTRA_APT_PACKAGESEXTRA_CONDA_PACKAGESEXTRA_PIP_PACKAGES 来轻微地自定义软件环境。如果在容器中设置了这些环境变量,它们将分别触发以下调用:

apt-get install $EXTRA_APT_PACKAGES
conda install $EXTRA_CONDA_PACKAGES
python -m pip install $EXTRA_PIP_PACKAGES

例如,以下 conda 命令将 joblib 包安装到 Dask 工作软件环境中:

docker run --network dask -e EXTRA_CONDA_PACKAGES="joblib" ghcr.io/dask/dask dask-worker scheduler:8786

请注意,使用这些可能会显著延迟容器的启动时间,尤其是在使用 aptconda 时(pip 相对较快)。

记住,Dask 工作者和 Dask 客户端之间的软件版本匹配很重要。因此,在 Jupyter 和 Worker 镜像中包含相同的额外包通常是有用的。

源代码

Docker 文件维护在 https://github.com/dask/dask-docker。该仓库还包括一个 docker-compose 配置。