淺談 Docker,讓搭建資料科學環境更高效

閱讀時間約 5 分鐘
photo by Emile Perron on Unsplas

photo by Emile Perron on Unsplas

上篇我們在安裝 VirtualBox 練習使用虛擬化切割出獨立空間做開發,那除了使用 VM 達到虛擬化外,另一個輕量級的虛擬化技術 - 容器化

要使用容器,那就不能不認識 Docker

Docker 的背景與概念

Docker 是基於 Go 語言實現的一個開源項目,在 2013 年誕生,最初是 dotCloud 公司內部的一個 Sideproject 。虛擬化最想解決的一大痛點是,當開發者在不同平台或硬體佈署時,都可以克服環境設定的問題。簡單來說,在程式開發完成時,連需要的開發環境也打包起來,就不用擔心,我的開發環境與正式環境不同時,應用程式可不可以跑起來的問題。

虛擬機器 (Virtual machine) VS 容器 (Container)


Virtual Machines

Virtual Machines

透過 Hypervisor 讓虛擬機內的作業系統和原生的作業系統溝通,也就是說可以在原本的電腦上,安裝另外一套作業系統。

raw-image

Docker 是基於 Docker engine ,透過容器平台將 Application(應用程式)所需的環境、程式碼、函式庫打包完成,建立資源管理的機制,可以讓系統分配資源獨立運行,像是: 我的電腦有兩顆 GPU ,我可以將一個 GPU 分配給某個 Container 。

raw-image

兩者相比

虛擬機和容器的對比,容器在很多功能上都大大的勝過虛擬機,而除了這些效能上的勝出,容器的優點中,對我而言最大的幫助是更快速的交付和佈署,開發者可以用一套標準的映像檔(Docker image),建立 Container 做開發,開發完成後,也可以將 Container 直接打包,直接移植到其他機器,這會讓佈署交付更快速。

講了這麼多容器化(Container)的優點

先來安裝 Docker 吧~~~

安裝 Docker

  • 在 Linux 系統上透過指令安裝 Docker,可參考以下指令,安裝完成後,透過查看 Docker version 確認安裝成功

sudo apt-get install docker.io

sudo service docker start

sudo docker version

詳細的安裝可以參考:

以及如果不想要每次執行 Docker 指令時都 sudo ,可以把 Docker 加入權限,指令如下:

sudo groupadd docker

sudo usermod -aG docker $USER

newgrp docker

Docker 核心三要素

  • 映像檔(Image)
    可以把它想成當下那個環境的 Snapshot 、當下的模板,可以依照模板實作出相同的 Container ,而模板的內容可以用 Dockerifle 紀錄(像是施工的藍圖)。所以我們可以從 Dockerfile 把 Image build 起來,也可以下載別人已經製作好的 Image 來使用。
  • 容器(Container)
    把剛剛的 image 實作出來的東西就是容器,也就是說可以從 Image build 出 Container ,平常在撰寫跟開發的空間就是 Container 。而且 Container 之間是可以相互隔離的。
  • 倉庫(Repository)
    Repository 是存放 Image 的地方,而且 Repository 分為 Public 和 Private,最常使用到的 Public Repository 是 Docker Hub , 上面有很多 Image 可以下載,也可以將自己 Image 上傳存放、共享給他人。
Docker hub 上的 Image

Docker hub 上的 Image

總結

  1. 從 Dockerfile build image -> Image 存放在 Repository -> 實作 Image 成為 Container -> 在 Container 裡面做開發。
  2. 另一方面,可以在 Container 裡面做修改與開發 -> 都可以再壓成新的 Image ,也是存在 Repository 裏面 -> 新的 Image 變更的地方又可以更新在 Dockerfile 上。

小心得

這篇先說明了關於 Docker 幾個重要基本的知識點,並且安裝好 Docker ,因為篇幅的關係,把一些內容拆在下一篇的文章中。接下來會分享更多實作的內容,例如從 Docker hub 下載 Image , 並且 Build 成 Container ,在 Container 裏面 Training model ,我們下次見!

參考資料

23會員
28內容數
歡迎來到《桃花源記》專欄。這裡不僅是一個文字的集合,更是一個探索、夢想和自我發現的空間。在這個專欄中,我們將一同走進那些隱藏在日常生活中的"桃花源"——那些讓我們心動、讓我們反思、讓我們找到內心平靜的時刻和地方
留言0
查看全部
發表第一個留言支持創作者!