Jupyter лучше запускать не из официального docker образа, а создавать свой образ вручную. Тогда при критической ошибке после установки новых пакетов контейнер не будет падать, и можно будет починить его изнутри.
Всё описанное ниже стоит оформить в docker файл, но пока руки не дошли.
Сначала запускаем образ чистой Debian:
docker run -dit --name jupyter debian
Входим в командную строку контейнера:
docker exec -u root -it jupyter bash
Для автозапуска от лица jupyter добавляем в /root/.bashrc следующее:
echo '/bin/su -c "/home/jupyter/.local/bin/jupyter-lab --ip 0.0.0.0 >/dev/null 2>&1 &" - jupyter' >> /root/.bashrc
Устанавливаем питон:
apt update && apt install -y python3-pip python3-dev
Добавляем пользователя и заходим в него:
useradd -m jupyter
sed -i 's|jupyter:/bin/sh|jupyter:/bin/bash|' /etc/passwd
su - jupyter
cd ~
Устанавливаем jupyter-lab через pip:
pip install jupyterlab
Ставим ссылки на исполняемые файлы:
echo 'export PATH=/home/jupyter/.local/bin:$PATH' >> ~/.bashrc
Надо загрузить добавленные переменные оболочки. Можно релогинуться, но легче запустить новый bash:
bash
Ставим пароль:
jupyter lab password
После чего стоит выйти из контейнера и проверить работу, перезапустив его:
docker restart jupyter
Находим ip адрес контейнера:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' jupyter
Заходим на него, на порт "8888". Например, так:
http://172.17.0.2:8888/
Если всё работает верно, то надо закомитить контейнер, чтобы в случае ЧП с установкой в него нового ПО пересоздать:
docker commit jupyter my/jupyter:1.0.0
Теперь можно пересоздать контейнер из образа, чтобы подключить общую папку (если сразу подключать, то будут проблемы с созданием домашней папки пользователя jupyter внутри контейнера):
docker rm -f jupyter
docker run -dit --ip 172.18.0.2 -v '/mnt/files/Work/share/docker':'/home/jupyter/share' --name jupyter my/jupyter:1.0.0
Чтобы удалить все pip пакеты кроме jupyterlab, можно использовать команду:
pip freeze | grep -v jupyter | xargs pip uninstall -y
Для обновления jupyterlab, установленного через pip, можно выполнить команду:
pip install --upgrade jupyterlab