---
# System prepended metadata

title: Docker介紹（二）
tags: [Docker, ' Container']

---

---
tags: Docker, Container
---
# Docker介紹（二）
## Docker
Docker並不是唯一的Conatiner技術，而是最熱門的技術其中之一。而Docker主要是Linux Container (LXC)的擴展，使用API

## Docker基本概念
了解完Docker的基本概念後，要進一步了解使用Docker時最重要的三個元素，分別是Image、Container、Registry，而這三個概念主要為：
### Image:
Image是一個模板，可用來產生Container，而這個模板可以是一個MySQL服務，或者是一個輕量的Ubuntu的作業系統。而透過Image，我們可以產生執行應用程式的Container，而這個Image可以是由Dockerfile建立，也可以從Registry下載別人已經建立好的Image，並基於這個Image做額外擴充。

### Container:
Container是透過Image建立出來的，它是一個互相隔離、獨立的空間。Container包含了我們所需的應用程式元件，而它是可以透過指令來進行新增、開始、停止、刪除，也可以透過額外參數對它進行額外配置。

### Registry:
其實Registry就像github一樣，它可以存放很多Images，並透過push、pull的方式上傳、下載這個Image。而目前最大型的公開Registry是DockerHub。

## Docker運作流程
Docker在建立一個最基本的Image及Container的流程如下圖：
![](https://i.imgur.com/TO9JV9c.png)
### docker build (短虛線):
透過指令將Dockerfile叫daemon建立一個Image。而若妳的Dockerfile有基於某個Image，它是會自動去尋找這個Image並pull下來，然後在透過docker build出新的Image。

### docker pull (長虛線):
透過指令去特定的Registry將Image pull到本地端。

### docker run (長、短虛線):
透過指令去以Image來建立定執行Container，而若本地端沒有這個Image，也可以到Registry內找到這個Image並先pull到本地端，接著依據這個Image創建成Container。

###### tags: `Docker` `Container`