# Docker 實戰 1 - 五分鐘了解 Docker ## 前言 隨著框架越來越多,作業系統版本也不斷在更新,常常會出現版本不相容的情況,為了解覺這個問提,以前我們需要在電腦架設虛擬機,但是非常耗時和佔空間,所以就出現了可愛(ㄆㄚ ˋ)的小鯨魚Docker! 本篇就讓我們來認識一下Docker到底是什麼以及簡單的應用吧~ ## 什麼是Docker ### 定義 Docker是一個開放原始碼的開放平臺軟體,用於開發應用、交付應用和執行應用。目標是實作輕量級的作業系統虛擬化解決方案。 ### 好處 - 快速部署:Docker 容器具有跨平台可攜性,並且共享作業系統中的資源,它相較虛擬機更為輕量。在相同資源下,能執行容器數大約是虛擬機的 5 到 10 倍,能夠提高開發者的工作效率並節省資金。 - 版本控制和重複使用:docker可以儲存不同的版本的歷史紀錄,也可以重複使用image - 更有效率的CI/CD:網頁開發中,會有development和 production 兩種開發模式,渲染的流程會有些許不同,透過docker就可以測試和正視環境相同的production下程式會不會有問題。當然也可以搭配其他工具達成自動化部屬! ### 容器化  - 虛擬機(VM):將作業系統整個虛擬化,啟動速度久,至少40s以上 - 容器化(Container):將Library打包,不管OS問題,所以設置較為簡單,開啟時間也很快 ### 基本概念 一講到Docker,不外乎就是最重要的四個東西: Image, Container, Repository, Volumn 1. Image 映像檔:簡單來說就是打包好的東西,就像在前端網頁使用npm run build,後續再將打包好的檔案部署到伺服器上。 2. Container 容器:建立出來的實體環境,可以把容器看做是一個簡易版的 Linux 環境(包括root使用者權限、程式空間、使用者空間和網路空間等)。一個Container中可以執行多個image例如,可以把前端程式打包成一個image,再把後端程式打包成另一個image,然後放在同一個container中執行。 3. Repository 倉庫:放不同image的地方,分為公開倉庫(Public)和私有倉庫(Private)兩種形式。 - 公開倉庫就像Github可以讓大家放不同的程式碼一樣,在Docker中就是[DockerHub](https://hub.docker.com/),有些image可以從dockerhub上抓下來就像我們clone別人的github專案或是用npm install一樣 - 私有倉庫就是在本地網路內建立儲存的倉庫,可以透過下載[docker desktop](https://www.docker.com/products/docker-desktop/)看到視覺化的管理介面 4. Volumn:掌管硬碟空間與配置,與Data連接的地方,換言之就是存放東西的地方,舉例來說,將postgreslq資料庫打包成一個image到container上執行,使用者在資料庫新增一些資料後,如果我的container重新開啟會發現資料全部不見了,所以就需要一個volume將資料記錄下來,如此一來無論是突發狀況,又或是程式碼更新修改時,就不怕資料消失了!  ## 總結 我自己也是研究了很久,查閱很多不同說法和影片,甚至用docker部署專案好幾次,才慢慢理解這是一個多美妙的東西:) 總之我認為Docker也是在程式開發的路上不可或缺的一個技術,共勉之! 有興趣可以往下看 - [Docker 實戰 2 - 相關指令與Dockerfile](https://hackmd.io/ikFuYeHLRdeSM6p88_IhKA)  ## 參考資料 [什麼是 Docker](https://philipzheng.gitbook.io/docker_practice/introduction/what) [淺談Docker-虛擬機器和容器的差別](https://ithelp.ithome.com.tw/m/articles/10238498) [Docker基本觀念介紹](https://www.omniwaresoft.com.tw/product-news/docker-news/docker-introduction/)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.