在Windows上玩TensorFlow(一)——安裝Docker【轉】

來源:互聯網
上載者:User

標籤:教程   nbsp   zed   推薦閱讀   啟動命令   sla   分享   mac os   logs   

“Google”+“深度學習”,兩個標籤讓2015年12月才由Google開源的深度學習工具TensorFlow在其發布之後就迅速地成為了全球最為炙手可熱的開源項目,2016年4月,開源的TensorFlow又支援了分布式特性,向著生產環境下的應用更進一步。

TensorFlow API支援Python 2.7和Python 3.3+,共支援4種安裝方式。

  • Pip install
  • Virtualenv install
  • Anaconda install
  • Docker install

其中大部分支援Linux和Mac OS,由於主要開發環境是Windows,我選擇了最為靈活的docker方式安裝TensorFlow。TensorFlow還有GPU支援版本,本文僅探索CPU-Only版本。

我計劃完成一系列3篇博文,第一步安裝docker,第二步單機版TensorFlow的Demo,第三步分布式TensorFlow的Demo,爭取在1個月內完成。

1 Docker是什嗎?

借用Docker官網最大的一行字。

Docker allows you to package an application with all of its dependencies into a standardized unit for software development.

從功能上講,Docker也可以理解為一種虛擬化的方案,可以通過構建包含不同軟體的鏡像,來達到快速部署開發環境的目的。

再借用官網的一張圖,左邊藍色的部分從kernel開始一層層加了debian, emacs, apache形成了一個Image,每一層都是唯讀,我們運行這個Image的時候,上面蓋上了一層可讀寫的Container,讓我們做一些編輯和修改,一個簡單的伺服器就可以用了;又如右邊橘紅色的部分,Kernel的上面加上了BusyBox就形成了Image,運行起來之後就可以以非常輕量級的方式運行起busybox中支援的命令。再有我們接下來要學習的TensorFlow鏡像,就包含了運行它所需要的全部依賴,簡單操作就可以完成TensorFlow開發環境的搭建。

更多的Docker理解推薦閱讀10張圖帶你深入理解Docker容器和鏡像

2 安裝Docker

要在Windows上運行Docker,首先需要下載和安裝Docker Toolbox。順便奉上Docker Windows文檔,更喜歡官方文檔的話可以看這裡,也可以按照本文的步驟繼續。

2.1 確認系統版本

首先確認自己的系統是WIN 7或更新的64位系統,且需要支援硬體虛擬化技術。

Win 8及以上查看方法:

Win 7查看方法

Win 7 運行Microsoft? Hardware-Assisted Virtualization Detection Tool這一工具執行檢查。

完成之後就可以繼續下一步了。

2.2 安裝Docker Toolbox

點擊Docker Toolbox下載,在本文寫作時的最新版本為1.11.1,。
安裝過程會安裝Docker的各個組件和Oracle VirtualBox,因為Docker需要依賴Linux核心的一些特性,因此Mac和Windows都需要在機器上運行一個小型的Linux系統作為Host系統。如果已經安裝過VirtualBox的最新版本,則無需重新安裝。

自行選擇安裝路徑,如果已經安裝過Git也可以去掉該工具的勾選,VirtualBox也是一樣,其它可一路Next。

2.3 配置Docker

安裝完成後,建議先配置一個環境變數MACHINE_STORAGE_PATH,來自訂虛擬機器儲存的位置,因為之後下載的鏡像越來越多,都是放在虛擬機器的虛擬磁碟檔案中,虛擬磁碟檔案會越來越大,放在預設的C盤使用者目錄下可能會在以後造成一些麻煩,參考,設定為任意你喜歡的位置。

設定完成之後,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

 

 

 

還要注意過程中可能會出現一些要求Windows執行許可權的視窗,有些會最小化在工作列上,請一一賦予許可權。

建立完成之後鍵入docker-machine ls查看剛剛建立的虛擬機器,下面的命令都會以ron-docker為例,讀者請按照自己的配置修改。

C:\Users\ron>docker-machine lsNAME         ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORSron-docker   -        virtualbox   Running   tcp://192.168.99.100:2376           v1.11.1

 

這時候我們使用的CMD還不能與Docker Engine建立串連,可以通過docker-machine env mydocker查看如何設定。

C:\Users\ron>docker-machine env ron-dockerSET DOCKER_TLS_VERIFY=1SET DOCKER_HOST=tcp://192.168.99.100:2376SET DOCKER_CERT_PATH=E:\VirtualBox VM\machines\ron-dockerSET DOCKER_MACHINE_NAME=ron-dockerREM 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
3 運行鏡像

下面我們下載最新的TensorFlow鏡像來體驗一下在docker下運行鏡像。

3.1 下載鏡像
docker pull gcr.io/tensorflow/tensorflowdocker imagesREPOSITORY                     TAG                 IMAGE ID            CREATED             SIZEgcr.io/tensorflow/tensorflow   latest              aeff5a9860a3        2 weeks ago         714.2 MB
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

當然有可能有網路問題,請根據自己的具體狀況自行解決,掛代理,VPN,手動下載都可以。

3.2 啟動鏡像和探索

使用下面的命令啟動鏡像。

docker run -it gcr.io/tensorflow/tensorflow bash
  • 1

選項-i用於保持STDIN在當前的視窗上,-t用於分配一個pesudo-tty,兩個選項使得當前的視窗可以像一個linux的bash一樣運行,絲毫沒有違和感。第一個參數指定了使用的鏡像,第二個參數指定了啟動這個鏡像後啟用的命令,用bash啟動方便我們開始第一次的探索。

  • uname -a,查看資訊
  • cd到/目錄下,查看目錄結構
  • 運行tensorflow的hello world
[email protected]:/# uname -aLinux ec9bfd276082 4.4.8-boot2docker #1 SMP Mon Apr 25 21:57:27 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux[email protected]:/# ls /bin   dev  home  lib64  mnt        opt   root  run_jupyter.sh  srv  tmp  varboot  etc  lib   media  notebooks  proc  run   sbin            sys  usr[email protected]:/# pythonPython 2.7.6 (default, Jun 22 2015, 17:58:13)[GCC 4.8.2] on linux2Type "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>>>

 

注意到/目錄下的run_jupyter.sh,這事實上是目前的版本tensorflow啟動的預設命令,也就是說,如果我們在啟動鏡像時沒有指定bash,就會預設運行這個指令碼,這與一些稍早一些版本的tensorflow不同,許多教程中也還沒有提到,可能會造成困惑,讀者可以嘗試一下docker run -it gcr.io/tensorflow/tensorflow,它會啟動一個notebook的服務,運行在本地的8888連接埠上,但這樣就想從windows的瀏覽器上開啟notebook是不行的,這與docker本身的機制和運行在虛擬上兩個原因有關,如果讀者現在就想看到notebook,點擊這裡立即帶你去到完成更多必要配置的連接埠轉寄部分。

4 配置自己的快速啟動視窗

回顧一下上面的過程,要將一個Windows的CMD視窗變為一個運行特定容器的視窗,需要3步。

  1. 啟動虛擬機器
  2. 配置虛擬機器對應的環境變數
  3. 運行鏡像

下面我自己用的一個啟動指令碼,需要的話僅需修改相應的machine-name,然後將指令碼儲存為my-start.bat,放在toolbox安裝目錄下。之後右鍵my-start.bat->發送到案頭捷徑,按代碼下的圖配置該捷徑,/K參數可以使bat運行完之後不自動關閉。這樣,需要時雙擊運行就可以獲得一個新的可運行鏡像的CMD視窗。

@ECHO offSET machine-name=ron-dockerECHO Init...FOR /F %%i IN (‘docker-machine status %machine-name%‘) DO SET status=%%iIF %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 %%iECHO Init Finished.

 

5 完成更多必要配置

上面我們完成了鏡像從下載到啟動的過程,但在將docker用作開發環境之前,還有一些很有必要的配置工作要做,讓我們一起來完成下面3步。

5.1 連接埠轉寄

我們的容器運行在一個小的linux虛擬機器上,而虛擬機器又運行在Windows系統的VirtualBox上,自然的,運行在容器上的服務不能再Windows上開啟瀏覽器直接存取。連接埠轉寄就是要解決這個問題,共有兩步:

建立Windows和虛擬機器之間的連接埠轉寄

可以通過VirtualBox的管理介面完成,,然後重啟虛擬機器。

配置虛擬機器和容器之間的連接埠轉寄

使用-p選項

docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow

鍵入上面這條命令之後開啟瀏覽器,訪問localhost:8888,看到運行在容器中的notebook服務了吧

5.2 磁碟映射

磁碟映射是非常有用的一步配置,可以將Windows上的磁碟直接映射到容器中,這樣在Windows上開發代碼,直接在容器中運行,避免了寫完複製的大麻煩。磁碟映射的處理方法與連接埠轉寄類似,磁碟的映射關係需要完成Windwos到虛擬機器,虛擬機器到容器的兩步配置,請跟隨下面3個步驟:

建立Windows和虛擬機器之間的磁碟映射

開啟虛擬機器的設定頁面後,在共用資料夾中設定你想要共用的檔案夾和它的名稱,,重啟虛擬機器。

在虛擬機器中掛載磁碟

這一步要用到剛才設定的名稱,我這裡就是docker。

mkdir -p /home/docker/datamount -t vboxsf -o uid=1000,gid=50 docker /home/docker/data

到這裡,我們在Windows中所做的修改就可以即時地反映到虛擬機器中了。

建立虛擬機器和容器之間的磁碟映射

使用-v選項,建立兩個目錄的映射關係

docker run -it -v /home/docker/data:/data gcr.io/tensorflow/tensorflow bash

好了,試試在Windows的共用資料夾中添加一個python的hello world,然後在docker中python /data/hello.py試試吧

5.3 配置啟動指令碼

我們上面用docker-machine建立的虛擬機器,它的大部分目錄在重啟之後都會複原,除了/mnt/sda1,這個目錄也就是虛擬機器的虛擬磁碟檔案disk.vmdk所掛載的位置,我們可以修改裡面的/mnt/sda1/var/lib/boot2docker/profile檔案,在檔案最後添加我們自訂的啟動命令,比如說添加前面的磁碟映射,就是在profile檔案最後加上下面這兩句。

mkdir -p /home/docker/datamount -t vboxsf -o uid=1000,gid=50 docker /home/docker/data

這樣每次虛擬機器啟動就會完成磁碟的掛載了。

6 結語

到這裡,使用tensorflow之前安裝docker的工作我盡己所能最詳細地描述了,讀者您如果能看到這裡,我真的感到非常榮幸,第一次寫這麼長的教程,希望能帶來一些協助,最後,感謝下面參考資料的貢獻者們,請期待tensorflow三部曲第二篇吧~

7 參考資料
  1. 利用Docker構建開發環境:http://tech.uc.cn/?p=2726
  2. 10張圖帶你深入理解Docker容器和鏡像:http://dockone.io/article/783
  3. How to install and run TensorFlow on a Windows PC: http://www.netinstructions.com/how-to-install-and-run-tensorflow-on-a-windows-pc/
  4. Install Docker for Windows: https://docs.docker.com/windows/
  5. 5 Useful Docker Tips and Tricks on Windows:http://blog.pavelsklenar.com/5-useful-docker-tip-and-tricks-on-windows/

在Windows上玩TensorFlow(一)——安裝Docker【轉】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.