2024-05-08 14:45:39 +08:00
2024-02-22 22:01:13 +08:00
2024-02-23 23:04:49 +08:00
2024-02-19 18:17:40 +08:00
2024-02-19 18:16:32 +08:00
2024-05-08 14:45:39 +08:00
2024-01-28 19:12:10 +08:00
2024-01-28 19:12:10 +08:00
2024-02-23 23:04:03 +08:00
2023-12-26 18:29:11 +08:00
2023-12-26 18:29:11 +08:00
2024-02-19 18:17:40 +08:00
2024-02-19 18:17:40 +08:00
2024-02-23 23:03:31 +08:00
2024-02-22 17:01:22 +08:00

docker-jupyterhub

Getting started

main reference

构建自己的docker镜像

修改自己想要的python环境在文件Dockerfile.jupyterhub

基础镜像是:jupyter/scipy-notebook 里面含有conda

docker buildx build -t hotwa/jupyterhub:latest . -f Dockerfile.jupyterhub --load

修改docker-compose.yml文件环境变量DOCKER_NOTEBOOK_IMAGE

DOCKER_NOTEBOOK_IMAGE: hotwa/jupyterhub:latest

也可以通过 docker-compose 构建镜像

docker compose build

启动docker-compose.yml

docker compose up -d

停止

docker compose down

基本镜像

https://github.com/jupyter/docker-stacks/tree/main/images

jupyter-gpu

构建自己的基础镜像:

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

修改jupyterhub启动notebook的路径映射

修改jupyterhub_config.py文件修改卷的路径

c.DockerSpawner.volumes = {
    "jupyterhub-user-{username}": notebook_dir,
    "/mnt/mydrive": "/home/jovyan/work/mydrive",
    "/mnt/mydrive/project/docker-jupyterhub/id_rsa": "/home/jovyan/.ssh/id_rsa",
}

启动notebook修改

启动notebook修改docker-compose.yml文件修改notebook的基础镜像

      DOCKER_NOTEBOOK_IMAGE: hotwa/notebook:latest

Alternatives

nvidia-container-toolkit add

参考了 llama 容器部署

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
sudo apt-get install nvidia-container-runtime -y

Configure Docker to use Nvidia driver

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

实际上这个操作修改了/etc/docker/daemon.json文件

{
    "registry-mirrors": [
        "https://0b27f0a81a00f3560fbdc00ddd2f99e0.mirror.swr.myhuaweicloud.com",
        "https://ypzju6vq.mirror.aliyuncs.com",
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn"
    ],
    "runtimes": {
        "nvidia": {
            "args": [],
            "path": "nvidia-container-runtime"
        }
    }
}

配置完成之后:

docker-compose up -d

在jupyterhub_config.py中添加这样jupyterhub的容器启动镜像就可以使用宿主机的显卡了

# GPU 和网络配置
c.DockerSpawner.extra_host_config = {
    #'network_mode': 'host',
    'runtime': 'nvidia'
}
c.DockerSpawner.environment = {
    'NVIDIA_DRIVER_CAPABILITIES': 'compute,utility',
    'NVIDIA_VISIBLE_DEVICES': 'all'
}

清除卷

docker volume ls
docker-compose down
docker rm <container_name_or_id>
docker volume rm basic-example_jupyterhub-data
docker volume rm docker-jupyterhub_jupyterhub-data
docker volume rm jupyterhub-user-admin

修改绑定到notebook的卷

修改jupyterhub_config.py文件修改卷的路径

c.DockerSpawner.volumes = {
    "jupyterhub-user-{username}": notebook_dir,
    "/mnt/mydrive": "/home/jovyan/work/mydrive",
    "/mnt/mydrive/project/docker-jupyterhub/id_rsa": "/home/jovyan/.ssh/id_rsa",
}

docker-compose.yml文件修改notebook的基础镜像

DOCKER_NOTEBOOK_IMAGE: hotwa/notebook:latest

构建

构建基础notebook镜像

docker buildx build -t hotwa/notebook:latest -f Dockerfile.base-notebook . --load

构建jupyterhub镜像

docker compose build

推送镜像至阿里云私有仓库

docker login --username=ze.ga@qq.com registry.cn-hangzhou.aliyuncs.com
# 重命名
docker tag 2ad3860183ce registry.cn-hangzhou.aliyuncs.com/hotwa/jupyterhub:latest
docker tag ddf815cbaa9b registry.cn-hangzhou.aliyuncs.com/hotwa/notebook:latest
# 推送
docker login --username=ze.ga@qq.com registry.cn-hangzhou.aliyuncs.com
docker push registry.cn-hangzhou.aliyuncs.com/hotwa/jupyterhub:latest
docker push registry.cn-hangzhou.aliyuncs.com/hotwa/notebook:latest
# 拉取
docker pull registry.cn-hangzhou.aliyuncs.com/hotwa/jupyterhub:latest
docker pull registry.cn-hangzhou.aliyuncs.com/hotwa/notebook:latest

add mojo

docker build --no-cache \
	--build-arg AUTH_KEY= mut_efe460b898e3482bb6208bfcd4a51d7e \
  -t mojosdk:latest \
  -f mojo/examples/docker/Dockerfile.mojosdk .
docker buildx build --build-arg AUTH_KEY=mut_efe460b898e3482bb6208bfcd4a51d7e -t hotwa/notebook:latest . -f Dockerfile.base-notebook --load

自建证书

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout nginx-selfsigned.key -out nginx-selfsigned.crt openssl dhparam -out dhparam.pem 2048

这将会在当前目录生成私钥nginx-selfsigned.key自签名证书nginx-selfsigned.crt以及Diffie-Hellman参数dhparam.pem。

然后在您的nginx.conf中您需要使用这些文件

ssl_certificate /path/to/nginx-selfsigned.crt;
ssl_certificate_key /path/to/nginx-selfsigned.key;
ssl_dhparam /path/to/dhparam.pem;
Description
No description provided
Readme 141 KiB
Languages
Shell 44%
Python 27.5%
Gnuplot 14.6%
Dockerfile 13.9%