# docker-jupyterhub ## Getting started [main reference](https://github.com/jupyterhub/jupyterhub-deploy-docker) 构建自己的docker镜像 修改自己想要的python环境在文件`Dockerfile.jupyterhub` 基础镜像是:`jupyter/scipy-notebook` 里面含有conda ```shell docker buildx build -t hotwa/jupyterhub:latest . -f Dockerfile.jupyterhub --load ``` 修改docker-compose.yml文件环境变量:DOCKER_NOTEBOOK_IMAGE ```shell DOCKER_NOTEBOOK_IMAGE: hotwa/jupyterhub:latest ``` 也可以通过 docker-compose 构建镜像 ```shell docker compose build ``` 启动docker-compose.yml ```shell docker compose up -d ``` 停止 ```shell docker compose down ``` [基本镜像](https://github.com/jupyter/docker-stacks/tree/main/images/base-notebook) https://github.com/jupyter/docker-stacks/tree/main/images [jupyter-gpu](https://github.com/iot-salzburg/gpu-jupyter) 构建自己的基础镜像: ```shell git clone https://github.com/jupyter/docker-stacks cd docker-stacks/images/base-notebook # 修改这个目录下面的 Dockerfile文件, 在后面加就行,里面已经有了mamba、conda docker buildx build -t hotwa/notebook:latest . -f Dockerfile ``` ## Alternatives - [rocker/binder](https://rocker-project.org/images/versioned/binder.html) - From the R focused [rocker-project](https://rocker-project.org), lets you run both RStudio and Jupyter either standalone or in a JupyterHub - [jupyter/repo2docker](https://github.com/jupyterhub/repo2docker) - Turn git repositories into Jupyter-enabled Docker Images - [openshift/source-to-image](https://github.com/openshift/source-to-image) - A tool for building artifacts from source code and injecting them into docker images - [jupyter-on-openshift/jupyter-notebooks](https://github.com/jupyter-on-openshift/jupyter-notebooks) - OpenShift compatible S2I builder for basic notebook images ## nvidia-container-toolkit add 参考了 llama [容器部署](https://hub.docker.com/r/ollama/ollama) ```shell curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \ | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \ | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \ | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit ``` Configure Docker to use Nvidia driver ```shell sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker ``` 配置完成之后: ```shell docker-compose up -d ``` 在jupyterhub_config.py中添加:这样jupyterhub的容器启动镜像就可以使用宿主机的显卡了 ```python # GPU 和网络配置 c.DockerSpawner.extra_host_config = { #'network_mode': 'host', 'runtime': 'nvidia' } c.DockerSpawner.environment = { 'NVIDIA_DRIVER_CAPABILITIES': 'compute,utility', 'NVIDIA_VISIBLE_DEVICES': 'all' } ```