108 lines
3.0 KiB
Markdown
108 lines
3.0 KiB
Markdown
# 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'
|
||
}
|
||
```
|