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

參考資料

留言
avatar-img
留言分享你的想法!
avatar-img
Karen的沙龍
34會員
50內容數
歡迎來到《桃花源記》專欄。這裡不僅是一個文字的集合,更是一個探索、夢想和自我發現的空間。在這個專欄中,我們將一同走進那些隱藏在日常生活中的"桃花源"——那些讓我們心動、讓我們反思、讓我們找到內心平靜的時刻和地方
Karen的沙龍的其他內容
2025/04/21
這篇文章分析了學習英文的動機,根據Instagram抽書活動的留言,利用文字雲技術,歸納出大眾學習英文的主要原因是提升職場競爭力,並拓展國際職場機會。學習英文已不再是選項,而是攸關職涯發展的關鍵,持續提升英文能力將為個人帶來更多職涯選擇。
Thumbnail
2025/04/21
這篇文章分析了學習英文的動機,根據Instagram抽書活動的留言,利用文字雲技術,歸納出大眾學習英文的主要原因是提升職場競爭力,並拓展國際職場機會。學習英文已不再是選項,而是攸關職涯發展的關鍵,持續提升英文能力將為個人帶來更多職涯選擇。
Thumbnail
2025/02/02
這篇文章記錄使用Easy Few-shot框架和CUB鳥類資料集實作Few-Shot Learning模型的過程,包含資料讀取、Dataloader設計、ResNet12模型設定、Few-Shot訓練和測試評估等步驟。
Thumbnail
2025/02/02
這篇文章記錄使用Easy Few-shot框架和CUB鳥類資料集實作Few-Shot Learning模型的過程,包含資料讀取、Dataloader設計、ResNet12模型設定、Few-Shot訓練和測試評估等步驟。
Thumbnail
2024/12/16
探索Few-Shot Learning如何在數據稀缺的情況下使機器學習模型迅速學習並做出精確預測。本文將介紹Few-Shot Learning的基本原理、核心策略,以及在實際應用。
Thumbnail
2024/12/16
探索Few-Shot Learning如何在數據稀缺的情況下使機器學習模型迅速學習並做出精確預測。本文將介紹Few-Shot Learning的基本原理、核心策略,以及在實際應用。
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
前言 上次我們講到 Docker 的功用與好處,今天我們要在講解,如何安裝 Docker 這個容器,讓我們在之後的教學應用更好的實作與練習,現在讓我們開始吧 Docker Engine 與 Docker Desktop 首先在講解怎麼安裝 Docker 時,我們先講解 Docker Engin
Thumbnail
前言 上次我們講到 Docker 的功用與好處,今天我們要在講解,如何安裝 Docker 這個容器,讓我們在之後的教學應用更好的實作與練習,現在讓我們開始吧 Docker Engine 與 Docker Desktop 首先在講解怎麼安裝 Docker 時,我們先講解 Docker Engin
Thumbnail
前言 大家好我們今天要來教 Docker 這項技術,什麼是 Docker ? Docker 可以幫助我們做什麼事情 ? Docker 是一項容器化技術,他可以降低我們在佈署 App 時,讓我們可以有效的分配作業系統資源,降低佈署作業成本,現在讓我們來了解 Docker 要解決的問題 傳統佈署遇
Thumbnail
前言 大家好我們今天要來教 Docker 這項技術,什麼是 Docker ? Docker 可以幫助我們做什麼事情 ? Docker 是一項容器化技術,他可以降低我們在佈署 App 時,讓我們可以有效的分配作業系統資源,降低佈署作業成本,現在讓我們來了解 Docker 要解決的問題 傳統佈署遇
Thumbnail
Docker不僅僅改變了應用的部署方式,它還提供了一種封裝、分發和運行應用的統一方法。這篇文章將引導你完成Gin應用的容器化過程。
Thumbnail
Docker不僅僅改變了應用的部署方式,它還提供了一種封裝、分發和運行應用的統一方法。這篇文章將引導你完成Gin應用的容器化過程。
Thumbnail
限時好文,歡迎支持,讓阿Han給你最貼近業界的開發實戰教學… 為什麼不害怕犯錯很重要? 開發的過程中我們最害怕的就是我的程式把系統搞掛了…,這樣一來重新安裝作業系統的成本非常高,包括還原也是,我想這會阻礙我們學習的動力,那究竟有什麼樣的技術能夠讓我們開發的同時也能夠勇於犯錯呢? 答案就是「容器化」
Thumbnail
限時好文,歡迎支持,讓阿Han給你最貼近業界的開發實戰教學… 為什麼不害怕犯錯很重要? 開發的過程中我們最害怕的就是我的程式把系統搞掛了…,這樣一來重新安裝作業系統的成本非常高,包括還原也是,我想這會阻礙我們學習的動力,那究竟有什麼樣的技術能夠讓我們開發的同時也能夠勇於犯錯呢? 答案就是「容器化」
Thumbnail
講到Docker之前就必須先談談容器化, 容器化是一種軟體開發的方法, 將程式、依賴及組態封裝在映像檔之中, 那映像檔對於大部份的人來說一定非常的熟悉, 尤其是VM這個詞, 虛擬化技術的先行者, 有了這項技術之後, 我們就可以減少一些因為環境產生的問題導致難以排查程式錯誤的狀況, 甚至可以避免因為A
Thumbnail
講到Docker之前就必須先談談容器化, 容器化是一種軟體開發的方法, 將程式、依賴及組態封裝在映像檔之中, 那映像檔對於大部份的人來說一定非常的熟悉, 尤其是VM這個詞, 虛擬化技術的先行者, 有了這項技術之後, 我們就可以減少一些因為環境產生的問題導致難以排查程式錯誤的狀況, 甚至可以避免因為A
Thumbnail
上篇我們在安裝 VirtualBox 練習使用虛擬化切割出獨立空間做開發,那除了使用 VM 達到虛擬化外,另一個輕量級的虛擬化技術 - 容器化。 要使用容器,那就不能不認識 Docker
Thumbnail
上篇我們在安裝 VirtualBox 練習使用虛擬化切割出獨立空間做開發,那除了使用 VM 達到虛擬化外,另一個輕量級的虛擬化技術 - 容器化。 要使用容器,那就不能不認識 Docker
Thumbnail
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少因
Thumbnail
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少因
Thumbnail
這篇分享希望能讓你了解 什麼Container、與Kubernetes和Docker是什麼關係,以及Kubernetes中又包含了哪些 組件?
Thumbnail
這篇分享希望能讓你了解 什麼Container、與Kubernetes和Docker是什麼關係,以及Kubernetes中又包含了哪些 組件?
Thumbnail
圖片來自 Shine With Sapphire (本文譯自〈Docker for PHP Developers〉) Docker 和 Vagarant 有什麼不同? 如果在每個專案同時運行多個容器(container)的情況下 Docker 比 Vagrant 好在哪裡?會比用 Vagrant 同
Thumbnail
圖片來自 Shine With Sapphire (本文譯自〈Docker for PHP Developers〉) Docker 和 Vagarant 有什麼不同? 如果在每個專案同時運行多個容器(container)的情況下 Docker 比 Vagrant 好在哪裡?會比用 Vagrant 同
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News