我相信许多有兴趣学习DL的人都听说过这门课程:
https://www.udacity.com/course/deep-learning--ud730
我现在正在学习该课程,并希望分享如何从头开始在Windows上设置学习环境的分步说明。
设置环境(只运行一次!)
注:要在计算机重新启动后启动就绪环境,请在第二个答案中使用AFTER LOCAL MACHINE REBOOT指令。
脚步:
https://www.docker.com/products/docker-toolbox
Docker是一种在您的计算机上部署预配置虚拟学习环境的工具。它将在虚拟机内运行,无论如何都不会弄乱你的计算机。
mklink / J“C:\ Users \ USER \ .docker”“D:\ Docker”
更多信息:Change .docker directory on Windows
docker-machine创建vdocker -d virtualbox
FOR / f“tokens = *”%i IN('docker-machine env --shell cmd vdocker')DO%i
更多信息:How do I start tensorflow docker jupyter notebook
docker run -it -p 8888:8888 -p 6006:6006 --name tensorflow-udacity -it b.gcr.io/tensorflow-udacity/assignments:0.5.0
附:使用:8810端口,以防您在本地计算机上安装了IPython笔记本电脑。
注:必须先关闭VirtualBox,然后才能对系统设置进行任何更改。 (由jlarsch提供)
使用以下命令停止VM:
docker-machine stop vdocker
(可选)您还可以允许它使用更多内核以便更快地运行:
在本地机器重新启动之后
要在计算机重启后开始学习环境,请使用以下内容创建.bat文件(我称之为udacity-tf-start.bat):
call docker-machine start vdocker
FOR /f "tokens=*" %%i IN ('docker-machine env --shell cmd vdocker') DO %%i
call docker start -ai tensorflow-udacity
重要! %%是一种转义,你只需要在BAT文件中。如果您通过命令行运行相同的命令集,您应该使用:
FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd vdocker') DO %i
这里补充其他答案是我创建/运行/启动docker机器的起始脚本。安装程序现在归结为从https://docs.docker.com/toolbox/toolbox_install_windows/安装最新版本的docker工具箱(这应该是autom。安装vbox)并运行脚本:
@echo off
set DOCKERMACHINENAME=tensorflow-udacity
set REPOSITORY=gcr.io/tensorflow/udacity-assignments:0.6.0
set "LOCALDIR0=/%SystemDrive:~0,1%/"
call :LoCase LOCALDIR0
SET "LOCALDIR=%LOCALDIR0%Users/%USERNAME%"
docker-machine.exe env %DOCKERMACHINENAME% > nul 2> nul
if "%errorlevel%"=="0" goto m_exists
::Machine has to be created
docker-machine create -d virtualbox --virtualbox-memory 8196 %DOCKERMACHINENAME%
:m_exists
::Check if machine needs to be restarted
docker-machine ip %DOCKERMACHINENAME% > nul 2>nul
if not "%errorlevel%"=="0" (docker-machine.exe restart %DOCKERMACHINENAME%)
FOR /F "tokens=*" %%i IN ('docker-machine env --shell cmd %DOCKERMACHINENAME%') DO %%i
FOR /F "tokens=*" %%F IN ('docker-machine ip %DOCKERMACHINENAME%') DO (SET DOCKERMACHINEIP=%%F)
echo Access to iPython: %DOCKERMACHINEIP%:8888
docker inspect %DOCKERMACHINENAME% > nul 2> nul
if "%errorlevel%"=="0" goto m_started
:: Machine has to be started
docker run -p 8888:8888 --name %DOCKERMACHINENAME% -v %LOCALDIR%:/mnt/hosttmp:rw -it %REPOSITORY%
goto finished
:m_started
docker start -ai %DOCKERMACHINENAME%
goto finished
:LoCase
FOR %%i IN ("A=a" "B=b" "C=c" "D=d" "E=e" "F=f" "G=g" "H=h" "I=i" "J=j" "K=k" "L=l" "M=m" "N=n" "O=o" "P=p" "Q=q" "R=r" "S=s" "T=t" "U=u" "V=v" "W=w" "X=x" "Y=y" "Z=z") DO CALL SET "%1=%%%1:%%~i%%"
:finished
::hint: to remove container use: docker rm %DOCKERMACHINENAME%
它是如何工作的
免责声明:它可能有点类似于克里斯托弗诺兰的初始电影情节。
整体情况
细节
由于Windows操作系统的某些限制,Docker无法在本地运行(尚未)。这就是我们首先创建一个虚拟盒子的原因:
docker-machine创建vdocker -d virtualbox
下一步(表示为魔术步骤)为docker命令设置一些环境变量,以便能够连接到在虚拟框内运行的docker守护程序:
FOR / f“tokens = *”%i IN('docker-machine env --shell cmd vdocker')DO%i
>SET DOCKER_TLS_VERIFY=1
>SET DOCKER_HOST=tcp://192.168.99.100:2376
>SET DOCKER_CERT_PATH=C:\Users\USER\.docker\machine\machines\vdocker
>SET DOCKER_MACHINE_NAME=vdocker
然后我们运行:
docker run -it -p 8888:8888 -p 6006:6006 --name tensorflow-udacity -it b.gcr.io/tensorflow-udacity/assignments:0.5.0
从它从指定URL下载的映像创建名为tensorflow-udacity的docker容器。重要!该容器在虚拟盒内运行。
注意-p标志:
-p 8888:8888 -p 6006:6006
它告诉docker守护进程将容器的端口8888转发(发布)到主机(虚拟盒)端口8888.它还没有在Windows机器上可用!
现在我们再向虚拟盒设置添加一个端口转发规则: