Jupyter notebook 如何在本地计算机和子域中安装带有Docker的JupyterHub

Jupyter notebook 如何在本地计算机和子域中安装带有Docker的JupyterHub,jupyter-notebook,jupyter-lab,jupyterhub,jupyter-console,Jupyter Notebook,Jupyter Lab,Jupyterhub,Jupyter Console,我将在子域中运行JupyterHub。这是Dockerfile,jupyterhub_config.py、.gitlab-ci.yml。 我的第一个问题是如何配置jupyter_config.py。如何在容器中的构建上加载jupyterhub_config.py 如何在.gitlab-ci.yml中启动Jupyterhub进行测试,以及如何在子域中复制应用程序?我写了一个README.md。我需要一点帮助来建造JupyterHub。如果一切正常,我将编写一个完整的如何在本地计算机上安装Jupyt

我将在子域中运行JupyterHub。这是Dockerfile,jupyterhub_config.py、.gitlab-ci.yml。 我的第一个问题是如何配置jupyter_config.py。如何在容器中的构建上加载jupyterhub_config.py

如何在.gitlab-ci.yml中启动Jupyterhub进行测试,以及如何在子域中复制应用程序?我写了一个README.md。我需要一点帮助来建造JupyterHub。如果一切正常,我将编写一个完整的如何在本地计算机上安装JupyterHub,以及如何由提供商在子域中安装JupyterHub

FROM continuumio/miniconda3

# Updating packages
RUN apt-get update -y \
    && apt-get install -y --no-install-recommends \
       git \
       nano \
       unzip \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Install conda and Jupyter
RUN conda update -y conda
RUN conda install -c conda-forge jupyter_nbextensions_configurator \
    jupyterhub \
    jupyterlab \
    matplotlib \
    pandas \
    scipy

# Setup application
EXPOSE 8000

CMD ["jupyterhub", "--ip='*'", "--port=8000", "--no-browser", "--allow-root"]
.gitlab-ci.yml

image: docker:latest

variables:
  CONTAINER_IMAGE: registry.gitlab.com/joklein
  DOCKER_IMAGE: jupyterhub
  TAG: 0.1.0

services:
  - docker:dind

stages:
  - build
  - test
  - release
  - deploy

before_script:
  - echo "$GITLAB_PASSWORD" | docker login registry.gitlab.com --username $GITLAB_USER --password-stdin

build:
  stage: build
  script:
    - docker build -t $CONTAINER_IMAGE/$DOCKER_IMAGE .
    - docker push $CONTAINER_IMAGE/$DOCKER_IMAGE

test:
  stage: test
  script:
    - docker pull $CONTAINER_IMAGE/$DOCKER_IMAGE
      #    - docker run $CONTAINER_IMAGE/$DOCKER_IMAGE -dt -p 8000:8000 --name $DOCKER_IMAGE

release:
  stage: release
  script:
    - docker pull $CONTAINER_IMAGE/$DOCKER_IMAGE
    - docker tag  $CONTAINER_IMAGE/$DOCKER_IMAGE:latest $CONTAINER_IMAGE/$DOCKER_IMAGE:$TAG
    - docker push $CONTAINER_IMAGE/$DOCKER_IMAGE:$TAG
  only:
    - master

deploy:
  stage: deploy
  image: alpine:latest
  before_script:
    - apk update && apk add git openssh-client rsync
  script:
    - mkdir .public
    - cp -r * .public
    - mv .public public
    - mkdir "${HOME}/.ssh"
    - echo "${SSH_HOST_KEY}" > "${HOME}/.ssh/known_hosts"
    - echo "${SSH_PRIVATE_KEY}" > "${HOME}/.ssh/id_rsa"
    - chmod 700 "${HOME}/.ssh/id_rsa"
    - rsync -hrvz --delete --exclude=_ public/ user@example.com:www/jupyter/
  only:
    - master
jupyterhub_config.py

c = get_config()
# Letsencrypt (https://letsencrypt.org/) to obtain a free, trusted SSL
# certificate.
c.JupyterHub.ssl_key = '/etc/letsencrypt/live/example.com/privkey.pem'
c.JupyterHub.ssl_cert = '/etc/letsencrypt/live/example.com/fullchain.pem'
c.JupyterHub.port = 443
#
# Change from JupyterHub to JupyterLab
c.Spawner.default_url = '/lab'
c.Spawner.debug = True
#
# # Specify users and admin
c.Authenticator.whitelist = {"systemuser"}
c.Authenticator.admin_users = {"systemuser"}
JupyterHub和JupyterLab的Docker基地图像 JupyterHub是一款用于Jupyter笔记本电脑的多用户服务器。JupyterLab是 Jupyter项目的下一代基于web的用户界面。这 JupyterHub是和的基础映像 它作为一个独立的应用程序在(子)域中工作

从该映像派生的映像可以作为独立服务器运行,也可以作为 用作服务器的卷映像。也可以在CI/CD中使用它们 系统(如GitLab CI)在将内容绑定到应用程序之前构建内容 独立服务器容器

构建你的JupyterHub形象 基于此结构,您可以轻松地根据需要构建图像。使用生成的图像有两个选项:

  • 作为一个独立的形象
  • 作为Web服务器的卷映像
构建自己映像的最简单方法是使用Dockerfile。这只是一个例子。如果你需要更多的软件包,你可以用这个安装它们 Dockerfile和conda

构建容器
docker build-t juypterhub.

您的JupyterHub和JupyterLab将在此构建过程中自动生成

运行容器
docker run-p 8000:8000-d--名称jupyterhub jupyterhub jupyterhub

  • -p
    用于将您的
    本地端口8000
    映射到
    集装箱端口8000
  • -d
    用于在后台运行容器。JupyterHub只会写 日志,因此无需在终端中输出它们,除非您想对服务器错误进行故障排除
  • -- 命名jupyterhub
    命名您的容器jupyterhub
  • jupyterhub
    图像
  • jupyterhub
    是用于启动jupyterhub服务器的最后一个命令
您的
JupyterHub
Jupyterlab
现在可从
http://localhost:8000

启动/停止JupyterHub
docker启动/停止juyterhub

配置JupyterHub 让我们为JupyterHub加密证书 要在网站上启用HTTPS,您需要从证书颁发机构(CA)获取证书(一种文件类型)。Let's Encrypt是CA。为了从Let's Encrypt获得网站域的证书,您必须 演示对域的控制。使用Let's Encrypt,您可以使用 使用ACME协议的软件,该协议通常在web主机上运行

更改为并为您的域生成证书。作为 结果您得到四个文件,域key.txt域crt.txt,domain-csr.txt,account-key.txt。此文件使用base 64,在中可读 ASCII,不是二进制格式。证书已采用PEM格式。只是 将扩展名更改为*.pem

对于JupyterHub,只需要文件domain-key.txt和domain-crt

cp-domain-crt.txt fullchain.pem

cp domain-key.txt privkey.pem

在容器中添加系统用户 默认情况下,JupyterHub在服务器上搜索用户。为了能够 登录到我们的新JupyterHub服务器,我们需要连接到JupyterHub docker 容器,并使用密码创建新的系统用户

docker exec-it jupyterhub bash

useradd——创建家庭系统用户

passwd系统用户

退出

命令
docker exec-it jupyterhub bash
将在您的 码头集装箱您可以使用根shell在中创建系统用户 容器。这些帐户将用于JupyterHub的身份验证 默认配置

第一个命令useradd创建一个名为systemuser的新用户。第二份遗嘱
询问您的密码。

使用GitLab 12.0(2019年6月)及其

通过GitLab的Kubernetes集成部署JupyterHub提供了一种开始使用Jupyter笔记本电脑的简单方法,它可以用于创建和共享包含实时代码、可视化甚至运行手册的文档

从GitLab 12.0开始,在Kubernetes群集上安装JupyterHub时,会自动配置JupyterLab的Git扩展
这种集成支持对笔记本电脑的完整版本控制,以及在Jupyter中发布Git命令。Git命令可以通过左面板上的Git选项卡或Jupyter的命令行提示符发出

见和

这就是我们的计划


它在
/srv/jupyterhub

中创建了一个config.py文件,您如何应用该配置?
jupyterhub --generate-config