淺談 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會員
58內容數
歡迎來到《桃花源記》專欄。這裡不僅是一個文字的集合,更是一個探索、夢想和自我發現的空間。在這個專欄中,我們將一同走進那些隱藏在日常生活中的"桃花源"——那些讓我們心動、讓我們反思、讓我們找到內心平靜的時刻和地方
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
身為採購專家,當然不能錯過11/11購物節的超殺折扣!本文將帶你深入瞭解蝦皮11/11購物節的完整攻略,從必領的各種優惠券、商城折扣,到限時的搶購技巧,讓你買到手軟荷包也不哭泣。更重要的是,揭密蝦皮分潤計畫,教你如何零成本創業,透過分享商品連結,每月輕鬆加薪,開啟數位遊牧人生!
Thumbnail
身為採購專家,當然不能錯過11/11購物節的超殺折扣!本文將帶你深入瞭解蝦皮11/11購物節的完整攻略,從必領的各種優惠券、商城折扣,到限時的搶購技巧,讓你買到手軟荷包也不哭泣。更重要的是,揭密蝦皮分潤計畫,教你如何零成本創業,透過分享商品連結,每月輕鬆加薪,開啟數位遊牧人生!
Thumbnail
雙11購物節將近,這次分享一些蝦皮海外賣場購物的步驟與注意事項,並且介紹雙11蝦皮購物的相關優惠;另外蝦皮分潤計畫持續招募新血中,只要分享購物連結即可獲得分潤,是很適合創作者的額外收入管道喔!
Thumbnail
雙11購物節將近,這次分享一些蝦皮海外賣場購物的步驟與注意事項,並且介紹雙11蝦皮購物的相關優惠;另外蝦皮分潤計畫持續招募新血中,只要分享購物連結即可獲得分潤,是很適合創作者的額外收入管道喔!
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 同
Thumbnail
章節 我為什麼要用 Docker? Docker 的初步認識。(本篇文章) Docker Hello World。 Docker Services。 Docker Swarm。 Docker Stack。 Docker 的官方文件就列出下圖來說明 Docker 是什麼?
Thumbnail
章節 我為什麼要用 Docker? Docker 的初步認識。(本篇文章) Docker Hello World。 Docker Services。 Docker Swarm。 Docker Stack。 Docker 的官方文件就列出下圖來說明 Docker 是什麼?
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News