因为在外网服务器上使用,系统通过docker的形式干净的使用。发现官方自己提供了标准镜像。(jupyter/scipy-notebook)网站上还有镜像选择的一些说明
这里我直接提供我的运行脚本。

docker stop JupyterLab
docker rm JupyterLab
docker run -d \
-p 8888:8888 \
-e JUPYTER_ENABLE_LAB=yes \
-v /data/docker/jupyter:/home/jovyan/work \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
-v /etc/timezone:/etc/timezone \
--restart=always \
--name JupyterLab jupyterlab-liang:scipy

最后一行第一次使用时需要改为自己选择的镜像名称。
然后第一次可以不带-d的参数,这样会输出用于访问的网址和token。最好不要直接点击。而是复制token之前的地址,访问后,用页面最下端的密码设置区,输入token和新密码,设置密码访问。注意,只有token未使用的第一次设置密码有效。我没成功,所以使用了官方的方法手动设置密码。

jupyter notebook password

然后要重启容器,就可以用密码登录的。但是我是直接commit出自己的版本,然后,利用上面的脚本再次启动。

docker commit a404c6c174a2 jupyterlab-liang:scipy 

这样做的主要目的是放置容器更新,导致密码或存档消失。注意,重要文档要放在上面映射到容器的work目录里。

最后,我使用域名访问,会出现一些notfound等莫名奇妙的错误。这里提供我NGINX的代理配置。

server {
    server_name DOMAIN IP_ADDRESS; # 服务器域名和 IP 地址
    listen 80;
    location / {
        proxy_pass http://127.0.0.1:JUPYTER_PORT/; # JUPYTER_PORT 为 Jupyter 运行端口
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
    }
}

主要是注意location 这一段。

好了,没什问题了。

Last modification:February 15, 2022
送杯咖啡,做个交流,谢谢!