iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 1
23
DevOps

用30天來介紹和使用 Docker系列 第 1

Day 1 介紹為何要使用 Docker

  • 分享至 

  • xImage
  •  

時間過得很快,又到了一年一度的 IT 鐵人賽,這一次要寫的題目是在這 30 天內介紹和使用Docker。

介紹 Docker 的主要原因,有以下幾點:

  1. 在安裝一些service時常常會遇到作業系統版本不同、Kernel不同、環境變數設定沒設定或是設定檔沒設定正確…等,而造成 service 無法正常的啟動起來,會花費很多的時間在 trial and error 而造成工作的效率變差。

  2. 如果在程式的撰寫過程中需要有多個測試環境,例如測試不同版本的 service 是否能在我們撰寫的 code 上正常的執行。如果把這個 service直接安裝在自已的作業系統環境上,需要換版本測試時會反覆的安裝和解安裝,容易因為沒有解安裝完整,舊版的檔案還存在。而造成版本混亂service 也就無法正常的啟動起來。

  3. 如果在開發一個 open source 的專案,如果希望要給很多人來使用,那就需要有一個簡單的安裝方法。像是可以把開發完的程式包成 docker image 然後放到 docker hub上,使用者如果想要使用,只要下幾行 command 就可以把我們開發的程式執行起來了。

以上的幾個問題在 Docker 出現之後,就可以用最簡單的指令將程式執行起來,然後可以依照不同的版本做程式的切換,如果在測試完成之後不要使用這些程式可以很快速的刪除掉。可以把不同版本的程式隔離開來,解決不同版本之間的衝突。

這就是使用 Docker 好處所在。 但是會有人問那跟使用 VM 和使用 Docker 之間的差別在哪?

以下列出 VM 和 Docker 的差異
VirtualBox:

  • 需要安裝作業系統
  • VM 裡面的作業系統開機需要花一點時間開機
  • 完全的把系統的硬體資源隔離
  • 佔用硬碟的容量較大

Docker:

  • 直接從 Docker Hub Pull 作業系統的 Image
  • 不用開機,啟動速度比 VM 快
  • 底層還是使用作業系統的 Kernel
  • 佔用硬碟的容量較小

Docker 和 VM 不只可以單獨的使用,也可以搭配的拿來使用。要確保整體系統完整的虛擬化就先用 VM 安裝作業系統,然後在 VM 的作業系統上使用 Docker 啟動需要執行的 container。這可以按照使用者的使用情境決定要如何的安排使用 VM 和 Docker。

以下的 Demo是如何透過 Docker 快速的把 Nginx Service ( Nginx 是一個 Web Server 的 service) 執行起來:

1.在有安裝Docker的機器上執行以下的指令

# docker run -d -p 80:80 nginx

2.執行的 console 如下圖
https://ithelp.ithome.com.tw/upload/images/20171204/20103456ZFvV3nhHvC.png

3.打開 Browser 輸入 http://localhost ,就可以看到如下的畫面
https://ithelp.ithome.com.tw/upload/images/20171204/20103456d3Lw1m0G8L.png

以上只要輸入一個指令就可以把 Nginx Service 執行起來,可以看出使用 Docker 的簡單性和方便性,上面docker run的指令會在未來 30 天內為大家介紹。

這 30 天預計要介紹有關於 Docker 的內容如下:

  • Docker 架構說明
  • Docker 的安裝
  • Docker command 的介紹
  • Dockerfile 的撰寫
  • Docker Hub 和 Docker Registry 的使用
  • Docker container 的資源設定 (CPU、Memory、Network、Disk)
  • 如何在 Docker 上使用 GPU
  • Docker Compose
  • Docker Swarm
  • Docker Machine
  • Monitor 在執行 Docker Container 的狀態

下一篇
Day2:認識 Docker 基本概念
系列文
用30天來介紹和使用 Docker30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

3
微中子
iT邦新手 4 級 ‧ 2017-12-04 19:56:24

It's time to spend time learning docker~

Docker 是一個很值得學習的工具。

0
ethan890506
iT邦新手 5 級 ‧ 2024-04-26 17:42:56

覺得這篇文章寫得很好,清楚介紹 Docker 和 VM 的差異,我剛剛也看到一篇文章深入針對 Docker基本慨念與容器與虛擬機比較。這裡推薦給大家 Docker 是什麼?Docker 基本觀念介紹與容器和虛擬機的比較

我要留言

立即登入留言