--- tags: 其他技術 --- # Docker * 備註 ``` 此篇內容並沒有要談論關於dockerfile及dockerfile的標準化和自動化,主要是討論甚麼是docker ``` * 前言 * 動機 ## Docker介紹 * 甚麼是docker * VM v.s docker   * Docker三個概念  [Docker architecture](https://docs.docker.com/get-started/overview/) * 映像檔(Image) * 沒甚麼好解釋的,就想像他是一片CD就好:D~~~~~ * 容器(Container) * 在圖片中也可以看到image是透過Container執行的。Container的好處就是速度快,體積小,且執行方便,可以隨時被啟動、開始、停止、刪除。且每個Container都是分離的,並不會互相干擾。 * 註冊表(Registry) * 所謂註冊表就如同github很像,當在docker hub 註冊完畢之後可以將自己完成的image放入自己的Repository(倉庫) 目前最大的倉庫是docker hub,如同github一樣存在公開與私有的權限,在後面實驗中會透過docker hub下載並執行 * Docker做到什麼? * Docker解決的問題 Docker用意除了要解決Virtual Machines 必須要基於Guest OS才能啟動,且啟動的時間變慢,且占用過大的記憶體。在部署方面,透過和雲端商業的配合,可以更好的移動部屬。在操作方面,因為Container的特性,可以更輕鬆操作,並從中發現問題並即時修正。 --- ## 優點 and 缺點 說是Docker跟VM的比較,不如說是Container和VM的優缺點,因為docker主要也是透過Container技術在執行的。 * VM 優點/缺點 * 優點: * 由於是將所有硬體層虛擬化,因此安全性較高 * 可以選擇不同的作業系統 * 服務大雜燴,不需要將所有的服務切開 * 缺點 * 資源吃太重,不只需要供應給VM,還要給服務,因此相對Container需要大量資源才能正常使用 * 因為是完整的硬體層虛擬化,因此啟用時間太長 * Size太大,可在實際比較中看到 * Container 優點/缺點 * 優點 * Image極小 * 吃的資源小,在重啟服務相對比VM還要快 * 操作方便,可以透過操作達到更快的修正,更新和部屬 * 可以花更多資源在運行服務上 * 缺點 * 不像VM,Container是依賴在硬體上,也就是環境共用,因此安全性較差 * 服務切分,因此在連結上會非常複雜 * 服務必須依賴在Host,無法一個給windows一個給Linux 實際比較 | | Docker | Virtual Machine | |:------------:|:------------:|:--------------------:| | 啟用時間 | 秒為單位 | 分為單位 | | disk size | MB單位 | GB單位 | | 主機同時運行 | 可達到數千個 | 最多可到數十個 | | 相容性 | 可接近原生 | 受限於虛擬技術支援性 | ## 實驗(動手做看看) * 實驗環境:Virtual Box * 作業系統:Ubuntu 21.10 * 實驗目標:在docker安裝並運行OS ~~我才不要自己寫服務~~ ## 參考 * [Docker v.s VirtualBox](https://coolmandiary.blogspot.com/2019/10/dockervmwarevirtualbox.html) * [Docker---從入門到實踐](https://philipzheng.gitbook.io/docker_practice/introduction/what) * [Docker doc](https://docs.docker.com/get-started/overview/) * [[容器] 容器技術之 Docker 篇 - 概念整理](https://blog.kevinyang.net/2020/07/30/docker-101-note-1/) * [Container與VM的差別](https://ithelp.ithome.com.tw/articles/10238498) * [Docker 是什麼?實戰手札帶你認識 Docker](https://tw.alphacamp.co/blog/docker-introduction)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up