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 檢視你的語言環境,輸入: locale
發現都是「posix」的話表示,此時的語言環境不能輸入中文。接著檢視支援的語言環境,輸入 locale -a
如發現支援c.utf-8,那麼在進入容器時,使用如下命令:
docker docker exec -it container_id env lang=c.utf-8 bash
這樣就可以了。(ps:如果容器內不支援中文,哪怕你直接在python中處理中文的語料也會報錯!)
不建議直接安裝帶有tensorflow的映象,主要是這些映象裡面的設定都配置好了,不太容易更改,自己安裝的話,可以更好地控制版本。
Docker學習之給Docker配置映象加速 5
ubuntu系統環境介紹介紹 ubuntu版本 18.04.1 系統配置 64位 linux核心 5.3.0 42 generic 一般情況下預設安裝的docker沒有daemon.json,我們可以通過以下命令進行新建daemon.json檔案 acestang acestang sudo vim...
Pytorch之Tensor和Numpy之間的轉換
最重要的區別t.tensor和t.tensor 不論輸入的型別是什麼,t.tensor 都會進行資料拷貝,不會共享記憶體 t.tensor 與numpy共享記憶體,但當numpy的資料型別和tensor的型別不一樣的時候,資料會被複製,不會共享記憶體。可使用t.from numpy 或者t.deta...
docker之hadoop HA高可用配置
搭建hadoop的高可用性,hadoop版本為2.6.5。hadoop的高可用配置有兩種方法,以下是我選擇配置的quorum journal manager qjm 的方法。quorum的高可用需要啟動奇數個 3 5 7等 journalnodes節點進行日誌的處理,活動namenode節點負責進行...