docker安装
systemctl stop firewalld.service
systemctl disable firewalld.service
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce
systemctl start docker
下载jupyterhub镜像
docker pull jupyterhub/jupyterhub
启动docker
docker run -p 8000:8000 -d --name jupyterhub -v /data/jupyterhub/jupyterhub:/srv/jupyterhub -v /data/jupyterhub/home:/home --restart=always jupyterhub/jupyterhub jupyterhub
访问jupyterhub
因为Jupyterhub是使用系统的账号和密码,所以需要登陆到docker容器里去创建系统账号和密码
登陆docker 容器
docker exec -it jupyterhub bash
useradd jupyterhub
passwd jupyterhub
输入两次密码
更新pip
pip install --upgrade pip
更新jupyterhub
pip install --upgrade jupyterhub
默认docker没有安装notebook,不执行这条命令,无法使用jupyterhub
pip install notebook --upgrade
打开浏览器,http://IP:8000,会出现500的错误,因为jupyterhub使用的的home目录没有权限,需要去添加权限,home目录是保存jupyterhub notebook文件的路径
chmod -R 777 /data/jupyterhub/home/
此命令针对实例不是在containner内部运行,也不是针对镜像的命令。
添加好权限后就可以正常访问,输入刚才创建的系统账号和密码
如果需要支持R语言的话,需要安装R内核
conda install -c r r-essentials |
R内核安装好后,还是会出现各种错误
再执行如下命令
apt-get install r-base r-base-dev |
测试R语言是否可以正常使用
登陆http://IP:8000
查看已安装的R语言包
installed.packages() |
可以打开docker日志查看并排错
docker logs -f jupyterhub |
如果想省事,怕麻烦,直接下载我打好的jupyterhub_r的docker镜像
docker pull 564239555/jupyterhub_r |
直接启动就好
docker run -p 8000:8000 -d --name jupyterhub -v /data/jupyterhub/jupyterhub:/srv/jupyterhub -v /data/jupyterhub/home:/home --restart=always 564239555/jupyterhub_r jupyterhub |
启动好后给home目录添加权限,进入docker容器创建账号和密码,就可以正常使用了
解决报错
cannot assign requested address.
jupyter notebook --ip=127.0.0.1 --allow-root
jupyter notebook更改配置文件
#生成jupyter配置文件,这个会生成配置文件.jupyter/jupyter_notebook_config.py
jupyter notebook --generate-config
#使用ipython生成密码
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:38a5ecdf288b:c82dace8d3c7a212ec0bd49bbb99c9af3bae076e'
#去配置文件.jupyter/jupyter_notebook_config.py中修改以下参数
c.NotebookApp.ip='*' #绑定所有地址
c.NotebookApp.password = u'刚才生成的密码'
c.NotebookApp.open_browser = False #启动后是否在浏览器中自动打开
c.NotebookApp.port =8888 #指定一个访问端口,默认8888,注意和映射的docker端口对应
添加用户和组
GID=`grep 'jupyterhub' /etc/group|awk -F':' '{print $3}'`
awk -F":" '{print $1"\t"$4}' /etc/passwd |grep $GID