使用docker镜像提供jupyter服务

用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 — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,661评论 15 147
  • 最近在学习大数据技术,朋友叫我直接学习Spark,英雄不问出处,菜鸟不问对错,于是我就开始了Spark学习。 为什...
    Plokmijn阅读 26,705评论 6 26
  • 简述docker一些常用的操作 查看到docker是否正常运行docker info 返回所有docker所有容器...
    翼动晴空阅读 1,028评论 0 10
  • 期末考试结束了,四门考试,现已出了三门成绩。我是那种靠着最后两周突击,完成基础题的人,所以分数平平。 撑死胆大的,...
    嘎达兔兔兔兔兔阅读 1,108评论 4 3
  • 两种思想 不同碰撞 想知道 自己应该选择哪一个 想了解 自己以后会不会后悔 想得到 一个完美的答案 想听到 自己内...
    小黑鱼的记忆阅读 218评论 0 0