淺談 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 ,我們下次見!

參考資料

24會員
28內容數
歡迎來到《桃花源記》專欄。這裡不僅是一個文字的集合,更是一個探索、夢想和自我發現的空間。在這個專欄中,我們將一同走進那些隱藏在日常生活中的"桃花源"——那些讓我們心動、讓我們反思、讓我們找到內心平靜的時刻和地方
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
浅谈沈栋发表的《红色赌盘》昨晚睡觉前,我把手机放在枕头边,躺在床上,听Youtbue 上,一位叫做LT视界的大咖讲解沈栋发表的《红色赌盘》中的一些细节。 这位大咖的分析非常到位。我之前也听过很多沈栋在台湾的访谈节目。我当初对于这位作者的印象还不错,觉得他思路很敏捷,谈吐不凡,见识广,的确是很有感染力,吸引力和洞察力。是个了不
avatar
Irvin
2023-04-02
浅谈孤立今日看到一句话让我感触颇深,想到了成长与经历这些字眼,觉得有道理便记下这段话; 离群索居者,不是野兽便是神灵。 尤其是在学生时代这种感觉尤为强烈,却不知都是一群连价值观都没形成的孩子。这种现象在学校中尤为突出。 被孤立的人啊!愿你成为上帝的宠儿。
avatar
xin wu
2022-06-08
淺談咖啡杯測的科學咖啡的香氣和味道,從栽種、處理、烘焙到沖煮的每個流程,主要都是在展現咖啡所蘊含的風味。而藉由杯測而使的原本個人定義的好咖啡變成有了客觀化的評論。咖啡杯測除了用來區分咖啡的良莠之外,更是試出每一隻咖啡的風味特性及特色,藉以提供給業者、消費者做選擇的依據。
Thumbnail
avatar
whitman
2021-09-21
淺談「環境教育」在開始談之前.....啊,突然想到好久以前的一件事 幾年前,曾在學妹的臉書留言一句"生態與環境教育屬不同領域" 好在,酸民當個好多年,不枉釣魚功力 馬上掉到一隻殺人鯨大學的小鳥兒 奇怪,我用的是魚餌,怎麼變成蚯蚓了?
Thumbnail
avatar
Louis
2020-07-22
淺談反思《我為甚麼去法國上哲學課》 蘇格拉底曾經說過 我唯一知道的就是知道自己一無所知。
Thumbnail
avatar
Serene
2020-03-13
淺談法國高中哲學法國高中,是如何教導學生有關哲學呢?給一個十五、六歲的小大人上一堂充滿深度的哲學課,他們又是如何看待這門無聊的課呢?又或者說,他們學到了什麼?點進來,讓高看帶你飛到法國上哲學課!
Thumbnail
avatar
LBB 嚕嗶啵
2019-03-27
淺談資料專案的測試測試驅動開發(Test-Driven Development, TDD)或是行為驅動開發(Behavioral-Driven Developement)是當代軟體工程裡面常見的方法論,然而以資料科學或是數據分析的專案來說,通常主要的「測試」會以模型的準確性或是資料分布的模式為核心
Thumbnail
avatar
Ofa Hsueh
2018-12-24
【談寫作】淺談短篇小說短篇小說,看似字數比較短,卻不代表內容品質與高度能偷工減料,也就是,你得呈現出和「長篇」小說同樣的效果,很驚人吧? 長篇小說的字數多,寫作彈性比較大,短篇小說當然就沒那麼有彈性,所以,不要相信那種「短篇小說適合初學者練習」這種鬼話,那是「請鬼拿藥單」。
Thumbnail
avatar
亦若是
2018-09-29
淺談《銀翼殺手》系列的哲學問題戲劇化以及導演手法機器人是否可以視為和人類擁有相近的心智功能?不少科幻片都圍繞著這個心智哲學問題以至於設定展開故事,而《銀翼殺手》(Blade Runner)也不例外;續作《銀翼殺手2049》的導演更是在表演風格以及戲劇節奏上做出高度的統一,使得該作儘管撲朔迷離難解,但卻能在前作上更進一步,達到更高的完成度。
Thumbnail
avatar
用一部片尾的時間
2018-07-31
淺談檢察官工作的法定任務與使命──學習司法官視角※本文係筆者於2014-2015年為學習司法官時,在高雄院檢學習檢方學習筆記整理簡要版,分發後擔任檢察官,一方面將過去在研究所學習的理論運用於檢警偵查作為合法性控制、另一方面將偵查技巧與偵查假設等運用於犯罪之發現,希望自己可以莫忘初衷——以程序正義來追求實體正義。
Thumbnail
avatar
Hsin-Yin Wu / 辭職治百病-離職檢察官的思辨日誌
2018-04-12