docker之配置TensorFlow的運行環境


Docker是一種 操作系統層面的虛擬化技術,類似於傳統的虛擬機。傳統虛擬機技術是虛擬出一套硬件后,在其上運行一個完整操作系統,在該系統上再運行所需應用進程;而容器內的應用進程直接運行於宿主的內核,容器內沒有自己的內核,而且也沒有進行硬件虛擬。因此容器要比傳統虛擬機更為輕便。傳統虛擬機使用前需要指定內存、硬盤燈大小,使用過程中即使程序沒有占用那么多資源也不會釋放出來,而Docker則是使用多少則占用多少。

Docker有三個主要的概念:鏡像(Image)、容器(Container)、倉庫(Repository)。我們都知道,操作系統分為內核和用戶空間。對於 Linux 而言,內核啟動后,會掛載 root 文件系統為其提供用戶空間支持。而 Docker 鏡像,就相當於是一個 root 文件系統。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu 16.04 最小系統的 root 文件系統。

Docker 鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時准備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建之后也不會被改變。Docker中的鏡像是分層存儲,往往是不同的docker依賴同一個的文件。

鏡像和容器的關系,就像是面向對象程序設計中的 類 和 實例 一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等。

容器的實質是進程,但與直接在宿主執行的進程不同,容器進程運行於屬於自己的獨立的 命名空間。因此容器可以擁有自己的 root 文件系統、自己的網絡配置、自己的進程空間,甚至自己的用戶 ID 空間。容器內的進程是運行在一個隔離的環境里,使用起來,就好像是在一個獨立於宿主的系統下操作一樣。這種特性使得容器封裝的應用比直接在宿主運行更加安全。也因為這種隔離的特性,很多人初學 Docker 時常常會混淆容器和虛擬機。

前面講過鏡像使用的是分層存儲,容器也是如此。每一個容器運行時,是以鏡像為基礎層,在其上創建一個當前容器的存儲層,我們可以稱這個為容器運行時讀寫而准備的存儲層為容器存儲層

容器存儲層的生存周期和容器一樣,容器消亡時,容器存儲層也隨之消亡。因此,任何保存於容器存儲層的信息都會隨容器刪除而丟失。

倉庫是存放鏡像的地方,一個倉庫可以有多個,這樣便於集中管理。

在熟悉上述概念的情況下,接下來將記述如何在docker中配置可以運行TensorFlow的環境

(前提已經安裝好docker,想要運行TensorFlow代碼)

1、    運行一個你熟悉的鏡像(如Ubuntu系統的鏡像)

docker run –it images_id /bin/bash

2、    查詢正在運行的容器

docker ps

3、    進入你之前運行的容器中

docker exec –it container_id /bin/bash

(這樣可以使用exit退出你的容器而不關閉容器)

4、    安裝python

apt update           //更新ubuntu系統

apt install python3  //安裝python3

5、    安裝pip3

apt install python3-pip

6、    安裝TensorFlow

pip install tensorflow

如此,服務器中的TensorFlow的運行環境就配好了。

提示:如果你的Docker中,無法使用中文

首先,在docker 查看你的語言環境,輸入:  locale

發現都是“POSIX”的話表示,此時的語言環境不能輸入中文。接着查看支持的語言環境,輸入 locale -a

如發現支持C.UTF-8,那么在進入容器時,使用如下命令:

docker docker exec -it  container_id env LANG=C.UTF-8 bash

這樣就可以了。(PS:如果容器內不支持中文,哪怕你直接在python中處理中文的語料也會報錯!)

不建議直接安裝帶有TensorFlow的鏡像,主要是這些鏡像里面的設置都配置好了,不太容易更改,自己安裝的話,可以更好地控制版本。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM