转自:http://blog.csdn.net/superman_xxx/article/details/65635285
1.安装docker,Docker ToolBox(傻瓜式安装一直下一步即可)
2.安装好之后建议先配置一个环境变量MACHINE_STORAGE_PATH,来自定义虚拟机保存的位置,因为之后下载的镜像越来越多,都是放在虚拟机的虚拟磁盘文件中,虚拟磁盘文件会越来越大,放在默认的C盘用户目录下可能会在以后造成一些麻烦,参考下图,设置为任意你喜欢的位置。
![这里写图片描述](https://img-blog.csdn.net/20170324162610235?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VwZXJtYW5feHh4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3.设置完成之后,WIN+R键输入cmd,打开一个windows命令行窗口。输入下面的命令新建一个虚拟机ron-docker,使用virtualbox作为driver,这个虚拟机会自动创建在你的MACHINE_STORAGE_PATH配置的目录中,安装过程会从github上拉取boot2docker.iso,可能会比较慢,可以手动下载,也可以直接将toolbox安装目录下的boot2docker.iso复制到%MACHINE_STORAGE_PATH%/cache中。
docker-machine create ron-docker -d virtualbox
手动设置方法如上,看截图:
将C:\Program Files\Docker Toolbox的镜像拖过去即可。
![这里写图片描述](https://img-blog.csdn.net/20170324162809063?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VwZXJtYW5feHh4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4.查看刚刚新建的虚拟机:
docker-machine ls
![这里写图片描述](https://img-blog.csdn.net/20170324163109142?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VwZXJtYW5feHh4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
5.这时候我们使用的CMD还不能与Docker Engine建立连接,设置方式:
C:\Users\ron>docker-machine env ron-docker
SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp:
SET DOCKER_CERT_PATH=E:\VirtualBox VM\machines\ron-docker
SET DOCKER_MACHINE_NAME=ron-docker
REM Run this command to configure your shell:
REM @FOR /f "tokens=*" %i IN ('docker-machine env ron-docker') DO @%i
键入下面的命令完成环境变量配置:
FOR /F "tokens=*" %i IN ('docker-machine env ron-docker') DO %i
6.下载镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/denverdino/tensorflow
//使用国内镜像站(阿里云)
7.使用下面的命令启动镜像:
docker run -it registry.cn-hangzhou.aliyuncs.com/denverdino/tensorflow /bin/bash
![这里写图片描述](https://img-blog.csdn.net/20170324170212111?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VwZXJtYW5feHh4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
8.
uname -a,查看信息
cd到/目录下,查看目录结构
运行tensorflow的hello world
root@ec9bfd276082:/# uname -a
Linux ec9bfd276082 4.4.8-boot2docker
root@ec9bfd276082:/# ls /
bin dev home lib64 mnt opt root run_jupyter.sh srv tmp var
boot etc lib media notebooks proc run sbin sys usr
root@ec9bfd276082:/# python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess =tf.Session()
>>> sess.run(hello)
'Hello, TensorFlow!'
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> sess.run(a+b)
42
>>>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
9.启动脚本:
仅需修改相应的machine-name,然后将脚本保存为my-start.bat,放在toolbox安装目录下。之后右键my-start.bat->发送到桌面快捷方式,按代码下的图配置该快捷方式,/K参数可以使bat运行完之后不自动关闭。这样,需要时双击运行就可以获得一个新的可运行镜像的CMD窗口。
@ECHO off
SET machine-name=ron-docker
ECHO Init...
FOR /F %%i IN ('docker-machine status %machine-name%') DO SET status=%%i
IF %status%==Running (
ECHO %machine-name% is running.
) ELSE (
ECHO %machine-name% is shutdown.
docker-machine start %machine-name%
)
ECHO Configuring Environment...
FOR /F "tokens=*" %%i IN ('docker-machine env %machine-name%') DO %%i
ECHO Init Finished.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
![这里写图片描述](https://img-blog.csdn.net/20170324171819385?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VwZXJtYW5feHh4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![这里写图片描述](https://img-blog.csdn.net/20170324171915510?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VwZXJtYW5feHh4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
10.将docker用作开发环境之前,还有一些很有必要的配置工作要做,让我们一起来完成下面3步:
(1)我们的容器运行在一个小的linux虚拟机上,而虚拟机又运行在Windows系统的VirtualBox上,自然的,运行在容器上的服务不能再Windows上打开浏览器直接访问。端口转发就是要解决这个问题,共有两步:
建立Windows和虚拟机之间的端口转发
可以通过VirtualBox的管理界面完成,如图,然后重启虚拟机。
![这里写图片描述](https://img-blog.csdn.net/20170324172618780?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VwZXJtYW5feHh4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
配置虚拟机和容器之间的端口转发
使用-p选项:
docker run -it -p 8888:8888 registry.cn-hangzhou.aliyuncs.com/denverdino/tensorflow
键入上面这条命令之后打开浏览器,访问localhost:8888,看到运行在容器中的notebook服务了吧
![这里写图片描述](https://img-blog.csdn.net/20170324173801409?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VwZXJtYW5feHh4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(2)磁盘映射是非常有用的一步配置,可以将Windows上的磁盘直接映射到容器中,这样在Windows上开发代码,直接在容器中运行,避免了写完复制的大麻烦。磁盘映射的处理方法与端口转发类似,磁盘的映射关系需要完成Windwos到虚拟机,虚拟机到容器的两步配置,请跟随下面3个步骤:
建立Windows和虚拟机之间的磁盘映射
打开虚拟机的设置页面后,在共享文件夹中设置你想要共享的文件夹和它的名称,如图,重启虚拟机。
![这里写图片描述](https://img-blog.csdn.net/20170324174257020?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VwZXJtYW5feHh4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(3)在虚拟机中挂载磁盘
这一步要用到刚才设置的名称,我这里就是docker。
mkdir -p /home/docker/data
mount -t vboxsf -o uid=1000,gid=50 docker /home/docker/data
到这里,我们在Windows中所做的修改就可以实时地反映到虚拟机中了。
建立虚拟机和容器之间的磁盘映射
使用-v选项,建立两个目录的映射关系
docker run -it -v /home/docker/data:/data registry.cn-hangzhou.aliyuncs.com/denverdino/tensorflow bash
好了,试试在Windows的共享文件夹中添加一个python的hello world,然后在docker中python /data/hello.py试试吧