Docker 镜像

Docker 镜像

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

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

这些镜像较大,大约 1GB。

  • ghcr.io/dask/dask: 这是一个标准的 debian + miniconda 镜像,包含完整的 Dask conda 包(包括分布式调度器)、Numpy 和 Pandas。此镜像大小约为 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

然后从 notebook 环境中,你可以像这样连接到 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 worker 软件环境中

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

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

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

源文件

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