`
baobeituping
  • 浏览: 1040893 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

[完美解决]如何在windows安装docker toolbox,使用tensorflow,Jupyter Notebook,各种问题的解决方案

阅读更多

版权声明:本文为博主原创文章,欢迎转载分享,请注明本文出自Bin的专栏:http://blog.csdn.net/xbinworld https://blog.csdn.net/xbinworld/article/details/78945879

上两周心血来潮想在自己的Surface(Win10 Home系统)上用TensorFlow和Python,但是安装实在是太麻烦了…就想到能不能在Windows上用docker直接运行linux环境的TensorFlow?网上一查还真有,然后很开心的下载安装…谁知进入了一个超级大坑T_T,经过断断续续几次的研究(折腾)终于在今天搭建完成环境,在本文中给一个详细的教程,帮助大家少走弯路~!

 

这是一个2018年的新年礼物!

 

1、下载Docker Toolbox for Windows,安装VirtualBox 

https://docs.docker.com/toolbox/overview/

 

 

 

推荐用迅雷下载,或者其他下载软件下载,用IE下载会让人抓狂的…一开始我下载了Docker for Windows,安装的时候才发现我的系统是Windows10 home版本不能装!需要Win10 Pro版才能装,那么大概以下的Win7/8这些都是不能装的,所以大家一般都跟我装的一样就行了,下载Docker Toolbox for Windows。

 

安装比较简单,基本按照这样点:

 

 

 

 

 

装完后就有: 

 

 

这里就有一个大坑天坑啊,从docker官网上下载下来自带安装的VirtualBox是5.2版本,我用了以后所有装好的虚拟机点“设置”或者网络之类的选项,就直接VirtualBox无响应了,虽然虚拟机是起来的(可以在命令行界面操作,但是不能配置网络就没办法后面配置转发,那么在主机Win10环境下就不能访问linux虚拟机里面跑的docker container起的Jupyter…这样编程就很不方便了..)作为有一点点强迫症的我是很不能接受的。所以呢,我就又单独删掉了上面安装的VirtualBox,下载了最新版本的VirtualBox 5.2.4,地址: 

http://download.virtualbox.org/virtualbox/5.2.4/VirtualBox-5.2.4-119785-Win.exe

 

然后呢,就可以往下走啦…还有好几个坑

 

2、安装、启动虚拟机 

因为我们安装的是Docker Toolbox,所以本质上Docker并不是安装在Windows上的,而是安装在虚拟机上的,所以需要先装一个虚拟机。而这个虚拟机安装很方便,不需要单独去准备Linux的镜像,因为Docker版本有对应的boot2docker镜像。

 

点击Docker Quickstart Terminal图标后,一般会出现下图(图片借用[1],这一段我忘记截图了),提示要么就是Boot2docker iso找不到,或者是out-of-date;它去找的路径一般是C:\Users\XXXXXX.docker\machine\cache,其中XXXXXX是你的电脑用户名,

 

 

 

它自己也会下载,但是极慢,所以关掉Docker Quickstart Terminal,根据前面屏幕提示自行用下载软件去https://github.com/boot2docker/boot2docker/releases/download/v17.12.0-ce/boot2docker.iso 

下载最新版本(可以根据上面屏幕的提示下载,我这个地址可能过几天也会旧的),并放到路径下:

 

 

 

重新启动Docker Quickstart Terminal,下面这样就正常了:

 

 

 

然后你就可以看见起了一个叫default的虚拟机,IP地址是192.168.99.100(我这里是,可能你的不一定完全一样,没关系。可以在win下面ping通的) 

 

 

OK,到这里docker就安装好了,大家可以用docker啦,后面就开始使用TensorFlow了。docker下用TensorFlow是一样的,所以有经验的同学应该很快就搞定。

 

简单科普一下Docker的使用命令,这里就先不展开啦http://www.docker.org.cn/dockerppt/106.html

 

3、安装TensorFlow 

根据你需要下载的镜像,先在docker hub上搜索一下,比如我要搜索TensorFlow,只要输入docker search tensorflow

 

 

 

然后pull第一个官方的镜像到本地 

docker pull tensorflow/tensorflow

 

 

 

这里直接这样做没问题,但是速度极慢,主要是镜像都在国外,所以推荐使用docker加速器,下面这个是免费的,速度很快,很赞!https://www.daocloud.io/mirror#accelerator-doc

 

点进去,注册id以后就可以看到镜像加速地址了,记下地址,然后在终端中依次打入下面四条命令(替换其中的加速地址),想要拷贝命令见文末的小贴士。

 

docker-machine ssh default

sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速地址 |g" /var/lib/boot2docker/profile

exit

docker-machine restart default 

1

2

3

4

这样前面的pull就飞快啦!如果你只是想用TensorFlow,或者只是测试一下前面的是不是都装好了,那么只要

 

docker run -it tensorflow/tensorflow bash

1

然后运行python,再看看TensorFlow简单的命令是不是OK[4]

 

 

 

到这里其实Python和TensorFlow已经可以用了,如果你对Linux比较熟,就可以自己安装vi这些然后开始用咯。不过这样毕竟比较复杂,所以呢我就想用Jupyter Notebook来学习TensorFlow和Python,这个环境对在windows上使用还是比较友好的。

 

3、安装Jupyter Notebook 

这一块是较为让我头疼的,在上面花了几天时间研究(主要是之前用virtualbox版本不好,一点设置就卡死…)。

 

如果你是直接在Linux主机上安装docker的,就像一般的用法, 

docker run -it -p 8888:8888 --name xx tensorflow/tensorflow bash

 

TensorFlow的镜像中在/目录下就有一个启动Jupyter服务的脚本,启动这个脚本

 

 

 

根据提示,只要在主机的浏览器中输入http://localhost:8888 

或者用可以联网的其他机器访问http://主机IP:8888,就可以访问Jupyter了,但是呢我们是在Win10上运行了虚拟机,再在虚拟机上运行了dokcer,这样就找不到Jupyter服务了。

 

我们需要做的是首先stop虚拟机default: 

docker-machine stop default 

然后去VitualBox软件中设置网络 

 

如果点“设置”出来这么一个提示:不能为虚拟电脑default打开一个新的任务(网上关于它的说法很多,我理解是因为在命令行中如果default已经启动了,这里想再操作就不行,要先stop),网络上[5]有一个说法是需要安装一个服务:打开网络和共享中心–> 更改适配器设置 

 

 

 

 

安装好后的效果是(有两个虚拟的网络适配器,都操作一下好了):

 

 

 

然后我再点“设置”就正常了,根据下图进行一个端口转发配置:ssh那一行是本来就有的。基本意思是说转发虚拟机的8888端口到主机host的8888端口。

 

 

 

然后启动defaut虚拟机: 

docker-machine start default 

当然启动之前你也可以看一下状态 

docker-machine ls 

 

 

查看之前已经退出了docker容器,有必要的你可以删除一些不要的了容器 

 

 

然后启动已经Exited的容器:

 

docker start xx

(xx就是前面我起的时候取的name)

docker attach xx

(回车两次)

1

2

3

4

 

再起一下Jupyter的服务,然后去Windows下面用浏览器访问http://localhost:8888 

就可以看到了Jupyter: 

 

可以玩Python啦

 

 

 

到这里基本上就差不多了,只要不把你起的name叫做xx的容器 rm掉,那么以后关机再起来之前存的一些文件就依然还在,这些文件是存放在虚拟机的虚拟存储中的,实际上也是占了一块host主机的存储,只是是放在虚拟存储文件中的。

 

当然,我还折腾(zuo)了一下挂载host主机文件夹到docker中,这样你在docker中修改的文件就可以直接在Host主机下看见,反过来也一样,会更方便,可以直接在windows host主机上拷贝/编辑文件,然后去docker中运行了。

 

6、挂载Windows磁盘 

因为我们用的虚拟机,所以呢实际上我们是(1)挂载Windows的磁盘到虚拟机上,(2)然后再从虚拟机上挂载到docker容器中。

 

(1)挂载Windows的磁盘到虚拟机上: 

我发现实际上装好虚拟机以后,系统默认是会将C:\Users挂载到虚拟机上的/c/Users,这个可以从VirtualBox的设置–共享文件夹看到的默认有的(要看的话先要docker-machine stop default):

 

 

 

因此我在Windows下C:\Users里面建立了一个文件夹data,然后在虚拟机下是可以看见的

 

 

 

其他的地址如果需要的话你在共享文件夹里面照着设置一下,据说windows暂时只支持c盘的映射,未试过,因为我的本本只有一个c盘T_T,所以我也就不设置了,直接用C:\Users就好了。

 

(2)从虚拟机上挂载到docker容器中 

这一步需要在第一次创建Container的时候打在命令中,因此有可能前面起的docker镜像又需要重新起了(前面那些都可以rm掉咯,或者换个名字yyy多起一个),下面的命令docker run命令是本文的终极版的:

 

docker run -it -p 8888:8888 -v /c/Users/data/:/data --name yyy tensorflow/tensorflow bash

1

-v命令把虚拟机的/c/Users/data目录挂载到Container中的/data目录,可以看到我在Windows上C:\Users\data编辑了一个ttt.txt文件,在Container里面直接就可以看见了:)

 

 

 

好了,这样就很完美啦(懒得再zuo了),大家有需要在自己的本本上玩玩TensorFlow和Python但是又不想装一大堆软件的,就试试用docker吧~~简直Perfect!

 

小贴士

 

如果不想用docker toolbox自带的命令行工具,想用类似Xshell这些工具访问虚拟机的,可以参考[6]。其中ssh 账号/密码 

——docker / tcuser

很多人觉得启动Docker Toolbox terminal后,发现在该终端中,无法进行复制、粘贴等操作,使用起来非常不方便。实际上是他们不会用哈,只需要用鼠标选中要复制的内容,然后鼠标左键点窗口左上角的图标:选择编辑,复制就行了,粘贴也是类似的。 

 

--------------------- 

作者:大饼博士X 

来源:CSDN 

原文:https://blog.csdn.net/xbinworld/article/details/78945879 

版权声明:本文为博主原创文章,转载请附上博文链接!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics