1. Docker介紹
1.1 Docker 是什麼?
在講Docker之前,想先跟各位說明虛擬機器 (Virtual Machine, VM)
相信讀者在玩遊戲時,或者是在做一些實驗時,可能會需要兩台電腦,但在以前的時代,擁有兩台電腦是相當奢侈的事,筆者高中玩遊戲想要雙開,都是透過虛擬機器,在自己的電腦透過VMware的軟體安裝第二個Windows作業系統。
而Docker的Container與VM的差異如下圖,VM會建立很多個Guest OS,這些OS會占用許多資源
因此Docker 目的就是將應用程式與硬體基礎架構分離。
1.2 為什麼需要Docker
使用Docker,會有幾個好處:
- Docker容器啟動超快,而VM打開就跟開機一樣需要時間載入作業系統
- 一台主機可以執行數千個Docker容器
- 可以更快速的交付和部署,一次建立跟設定,在任何有裝Docker的電腦上都可以運作
- 管理簡單
1.3 Docker Image與Container說明
Docker 有兩個最重要的名詞:
- Image: 映像檔
- Image 就像是一張光碟,只要放入光碟機,就可以運行裡面的應用程式。
- Image 中,可以包含一個完整的Ubuntu作業系統,但裡面只有安裝使用者需要的應用程式。
- 可以透過Dockerfile建立 屬於自己的Image,或是直接到Docker Repository下載別人建立的Image直接使用。
- Container: 容器
- 執行Image產生的東西,就稱為容器
- 容器可以被啟動、開始、停止、刪除
- 可以把容器當成一個簡易版的OS環境,包含要運行的應用程式
2. Docker 基本指令介紹
這裡筆者會介紹關於Image跟Container的基本操作,其他的指令則會留到以後文章介紹。
介紹前筆者建議讀者先下載Docker,跟著操作會比較好理解唷! 下載的方式請讀者參考官網或自行google囉!
2.1 新增並啟動容器
建立並執行container,執行完畢後,會回到下指令的地方,而該container會是結束的狀態
-t
讓Docker提供一個虛擬終端機
-i
使用互動模式,在互動模式下就如同在使用ubuntu的Terminal一般,ctrl+D則可以離開
若本機沒有該Image的話,則會從遠端的repository下載,預設是Docker Hub。
2.2 查看及移除容器
docker ps
檢視container的ID、Image、使用指令、建立時間、狀態、使用的Port及名稱等等
-a
檢視所有container,若不給定此參數,則只會顯示執行中的container
docker rm
刪除container,只有非執行中的container才能夠刪除
1fb28dbee08d
container的ID,也可以用container的名稱刪除
若一直執行run的話,會造成container數量持續增加,會造成管理上的困難,若沒有要再使用,就刪了吧。
2.3 下載及移除Image
列出本地所有Image
在Docker Hub上查詢busybox這個Image
下載busybox這個Image
移除busybox這個Image
2.4 建立、啟動及停止容器
使用busybox這個Image,建立名稱為 foo的容器
其中 -i -t 與docker run的-i -t功能一致
--name
則是會顯示在docker ps的NAMES欄,必須是唯一。
啟動名為foo的containter,-i同樣是互動模式
停止foo這個container
在每個步驟結束,都可以使用2.2學會的docker ps檢視目前container的狀態唷!
聰明的你應該已經發現了!!
docker run其實就是docker pull + docker create + docker start
取得對應的Image,建立container,最後啟動container
3. 結論
謝謝各位讀者看到這裡,以上介紹了Docker的基本概念以及基本指令,接下來的文章會再繼續往 透過Docker建立一個Python Flask的網站應用程式 的方向邁進唷,敬請期待。
若你有任何覺得好用的套件或是任何建議,也歡迎您在下方留言告訴我以及分享給其他人唷
若你覺得文章對你很有幫助,歡迎在網頁右方填入你的email訂閱本站唷
參考資料:
- Docker官網
- 30天與Docker做好朋友
- Docker從入門到實踐
Pingback: Docker環境建立 與小技巧 - Docker系列第2集 - ZaTalk Zavier的技術雜技