13
Docker Workshop by Ben

Docker workshop

Embed Size (px)

Citation preview

Page 1: Docker workshop

DockerWorkshop by Ben

Page 2: Docker workshop

什麼是 Docker

Page 3: Docker workshop

Docker 誕生的歷史‧ Docker 是一個開源專案,誕生於 2013 年初。‧ 基於 Google 推出的 Go 語言實作。‧ Docker 專案的目標是實作輕量級的作業系統虛擬化解決方案。‧ 目前最新版本為 2015-02-03 釋出的 1.5.0

我才兩歲!?

Page 4: Docker workshop

圖解差異點Docker 與傳統虛擬化技術的差異

Page 5: Docker workshop

傳統虛擬化技術

‧ 傳統虛擬架構每個虛擬客體裡都包含了一個作業系統。‧ 由客體作業系統中架構新的執行環境。‧ 由於只在硬體層實作共享,軟體層須重新加載整個作業系統,導致硬體資源不必要的浪費。

Page 6: Docker workshop

Docker

‧ Docker 下的 Container (概念等同一個虛擬客體) 由原生系統提供執行環境。‧ Docker 的基礎是 Linux 容器( LXC )等技術。‧ 執行環境由原生 OS 提供,藉由 LXC 技術動態加載所需的程式庫,故大量減少系 統虛擬化後的效能損耗。

Page 7: Docker workshop

Docker 的優點

除了效能上較傳統虛擬化技術為優外, Docker 還有以下的優點:•快速的交付和部署一次部屬,然後在任何地方執行!•有效率的虛擬化不需硬體層面的虛擬化支援, Docker 是核心面的虛擬化技術。•簡單的管理只需要小小的修改,就可以替代以往大量的更新工作。

Page 8: Docker workshop

基礎概念Image (映像檔)、 Container (容器)、 Repository (倉庫)

Page 9: Docker workshop

倉庫倉庫是集中存放映像檔檔案的場所。有時候會把倉庫和倉庫註冊伺服器( Registry )混為一談,並不嚴格區分。實際上,倉庫註冊伺服器上往往存放著多個倉庫,每個倉庫中又包含了多個映像檔,每個映像檔有不同的標籤( tag )。

倉庫分為公開倉庫( Public )和私有倉庫( Private )兩種形式。最大的公開倉庫是 Docker Hub ,存放了數量龐大的映像檔供使用者下載。

使用者也可以在本地網路內建立一個私有倉庫。當使用者建立了自己的映像檔之後就可以使用 push  命令將它上傳到公有或者私有倉庫,這樣下次在另外一台機器上使用這個映像檔時候,只需要從倉庫上 pull  下來就可以了。

* 註: Docker 倉庫的概念跟 Git  類似,註冊伺服器可以理解為 GitHub 這樣的託管服務。

Page 10: Docker workshop

映像檔Docker 映像檔就是一個唯讀的模板。例如:一個映像檔可以包含一個完整的 ubuntu 作業系統環境,裡面僅安裝了 Apache 或使用者需要的其它應用程式。

映像檔可以用來建立 Docker 容器。Docker 提供了一個很簡單的機制來建立映像檔或者更新現有的映像檔,使用者甚至可以直接從其他人那裡下載一個已經做好的映像檔來直接使用。

Page 11: Docker workshop

容器Docker 利用容器來執行應用。容器是從映像檔建立的執行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平台。

可以把容器看做是一個簡易版的 Linux 環境(包括 root 使用者權限、程式空間、使用者空間和網路空間等)和在其中執行的應用程式。

* 註:映像檔是唯讀的,容器在啟動的時候建立一層可寫層作為最上層。

Page 12: Docker workshop

實際體驗 Docker

Page 13: Docker workshop

目標

1. 從公共倉庫下載 wordpress ,mysql 兩個映像檔。docker pull wordpress:latest , mysql:latest

2. 建立兩個容器 , 並將為他們取上別命 myWP, myDBdocker run --name myDB -e MYSQL_ROOT_PASSWORD=1234 –d mysqldocker run --name myWP --link myDB:mysql -p 8080:80 -d wordpress

3. 關閉兩個容器,並重新執行它們docker stop myWPdocker stop myDB

4. 在瀏覽窗口測試無誤, Done!