问题出在很多迹象显示我要安装新的包，apt-get install需要管理员或sudo权限。查了很多都没找到相应的sudo密码。有人写的是jupyter，但在我的docker容器中并不是。 最终尝试如下方案成功，且算安全。 在docker的主机端运行docker exec docker exec -it -u root container_id bash 这样进去就是root，不需要密码即可用apt-get。做完更新后退出，必要时记得保存一下自己的容器文件，以免某些更新丢到此前的内部配置。 docker commit a404c6c174a2 jupyterlab-liang:scipy
今天在Jupyter下安装一个包，提示依赖关系中有一个包要求的版本在一个范围内，而我的默认包对应的版本已经高于它指定的版本，而且自动更新时死活安装不上，通过限定版本安装也不行。 pip3 install matplotlib==3.2.2 最后突然想到，反正我有更高的版本，干脆跳过版本检查吧。于是使用了相关参数 加入后缀 --no-dependencies 看说明是跳过了依赖检查，但至少能安装上了。
因为在外网服务器上使用，系统通过docker的形式干净的使用。发现官方自己提供了标准镜像。（jupyter/scipy-notebook）网站上还有镜[像选择的一些说明][1]。 这里我直接提供我的运行脚本。 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 这一段。 好了，没什问题了。 [1]: https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html