前言
數據科學開發環境配置起來讓人頭疼,會碰到包版本不一致、錯誤信息不熟悉和編譯時間漫長等問題。這很容易讓人垂頭喪氣,也使得邁入數據科學的這第一步十分艱難。而且這也是一個完全不常見的準入門檻。
還好,過去幾年中出現了能夠通過搭建孤立的環境來解決這個問題的技術。本文中我們就要介紹的這種技術名叫Docker。Docker能讓開發者簡單、快速地搭建數據科學開發環境,并支持使用例如Jupyter notebooks等工具進行數據探索。
簡介
Docker 最初 dotCloud 公司內部的一個業余項目
Docker 基于 Go 語言
Docker 項目的目標是實現輕量級的操作系統虛擬化解決方案
Docker 的基礎是 Linux 容器(LXC)等技術
Docker 容器的啟動可以在秒級實現,這相比傳統的虛擬機方式要快得多
Docker 對系統資源的利用率很高,一臺主機上可以同時運行數千個 Docker 容器
下面的圖片比較了 Docker 和傳統虛擬化方式的不同之處,可見容器是在操作系統層面上實現虛擬化,直接復用本地主機的操作系統,而傳統方式則是在硬件層面實現。
容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷盡量小。傳統虛擬機方式運行 10 個不同的應用就要起 10 個虛擬機,而Docker 只需要啟動 10 個隔離的應用即可。
主要優勢為:
更快速的交付和部署 - 容器成為了最小單位
更高效的虛擬化 - 內核級虛擬化
更輕松的遷移和拓展
更簡單的管理
基本概念
主要是三個:
鏡像(Image)
一個只讀的模板,鏡像可以用來創建 Docker 容器
可以簡單創建或更新現有鏡像,或者直接下載使用其他人的
容器(Container)
容器是從鏡像創建的運行實例,在啟動的時候創建一層可寫層作為最上層(因為鏡像是只讀的)
可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺
可以把容器看做是一個簡易版的 Linux 環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)和運行在其中的應用程序
倉庫(Repository)
集中存放鏡像文件的場所
最大的公開倉庫是 Docker Hub
國內的公開倉庫包括 Docker Pool 等
當用戶創建了自己的鏡像之后就可以使用 push 命令將它上傳到公有或者私有倉庫,這樣下次在另外一臺機器上使用這個鏡像時候,只需要從倉庫上 pull 下來就可以了
Docker 倉庫的概念跟 Git 類似,注冊服務器可以理解為 GitHub 這樣的托管服務
安裝
官方網站提供了 Mac, Linux 和 Windows 版本的安裝教程。因為我打算使用虛擬機進行安裝測試,所以這里主要走 Linux 的安裝教程,不過其他的應該大同小異。我的 ubuntu 版本是 14.04 LTS, trusty
新聞熱點
疑難解答