美文网首页
使用docker镜像提供jupyter服务

使用docker镜像提供jupyter服务

作者: ldh123 | 来源:发表于2017-11-27 13:56 被阅读0次

    用Dockerfile生成镜像

    FROM daocloud.io/ubuntu
    RUN apt-get update
    ADD Anaconda3-4.2.0-Linux-x86_64.sh /tmp/
    EXPOSE 8888
    

    这里是使用daocloud的ubuntu镜像,国内这个比较快,并且把本地的anaconda文件拷贝到docker里面,因为这个文件比较大,用docker下需要很久,这样下好了拷贝过去比较快。最后暴露8888端口来提供jupyter notebook的服务。

    用commit更新镜像

    因为安装anaconda时候要有多次选择,直接在Dockerfile里面写不太方便,所以先按照上步建立好镜像,之后再手动安装anaconda,之后退出docker,commit修改。

    用安装过anaconda之后的镜像启动jupyter notebook服务

    sudo docker run --name myjupyter -d  -p 8888:8888 conda-env sh -c "/root/anaconda3/bin/jupyter notebook --ip=172.17.0.2 --no-browser"  
    

    conda-env是镜像的名字
    注意后面执行命令的地方,要用sh去执行,不能写成类似这种:

    sudo docker run --name myjupyter -d conda-env  /root/anaconda3/bin/jupyter notebook --ip=172.17.0.2 --no-browser
    

    如果写成这种会导致jupyter的kernel反复重启根本没法用

    添加路由

    网络拓扑是docker跑在虚拟机里面,docker的ip是172.17.0.2,虚拟机是ubuntu,桥接ip是192.168.181.101,宿主机是windows。
    现在要求windows能访问docker提供的jupyter服务,所以需要有到docker的路由。
    首先在windows上ping 192.168.181.101,可以通,这说明宿主机到虚拟机网络是ok的;
    再在ubuntu上ping 172.17.0.2,可以通,说明虚拟机到docker网络也ok;
    但是从宿主机上ping 172.17.0.2 不通,所以需要在宿主机上增加到docker的路由:

    route add 172.17.0.2 mask 255.255.255.255 192.168.181.101
    

    这表示到docker的目的ip的网关是192.168.181.101
    添加好之后再ping 172.17.0.2,还是不通,原因是ubuntu的防火墙挡住了,所以要关掉:

    sudo ufw disable
    

    之后就ok了
    最后在windows浏览器上打开172.17.0.2:8888,就可以看见jupyter notebook

    相关文章

      网友评论

          本文标题:使用docker镜像提供jupyter服务

          本文链接:https://www.haomeiwen.com/subject/lvxdbxtx.html