---
# System prepended metadata

title: Docker 概念
tags: [學習筆記, Docker]

---

# Docker 概念

<summary>why docker?</summary>

> [開發環境]與[維護環境]往往會有所不同，這導致在[開發環境]下程式運作的很正常，但release到[維運環境]時卻不work，然後兩邊就互相拉扯、吵架。docker的出現很好的解決了這方面的問題，docker將[開發環境]及程式碼等內容製作成[鏡像]，再將鏡像佈屬至維運環境，這樣就達成『開發一次、運行anywhere』的目的。以往，開發人員以程式碼+環境設定給[維運]時，[維運]就得將這些設定遷出+遷入+整理家具，這樣[維運環境]才能正常使用；有了docker之後，就直接將[開發環境]複製並佈屬成[維運環境]，意即將 ***開發環境*** assign給 ***維護環境***。

<summary>docker 3 大核心是什麼?</summary>

> 倉庫(repository): 1個倉庫能存放多個映像，例如 hub.docker.com。
映像(image):        1個映像能實例化多個容器，容器之間互不干涉。
容器(container):    裝箱的內容，內容可以是設定檔，也可以是某一個安裝的程式。



<summary>docker 與 vm 的差別？</summary>

> docker 可以視作為一個精簡化的、去蕪存菁的小型 linux 核心，它減少了模擬硬體的實體(硬碟、cpu、ram、印表機etc)，大大的減輕的它的[包袱]，導致它開啟速度是以[秒]為級別的，而vm則是"分"鐘為啟動單位，因此，使用上是非常快捷的，在cluster的應用上能快速反應臨時暴量的訪問。
> 在架構上的差異可以參考下圖：
> ![](https://i.imgur.com/xr7bqwm.jpg)


<summary>學習 docker 需要具備什麼背景知識？</summary>

> [linux]與[linux相關的指令]，因為它們運行在 linux 之上，在佈屬上以 centoOS/Ubunto 兩種 distribution 較為常見。

###### tags: `Docker` `學習筆記`
