1. 程式人生 > 實用技巧 >Docker簡介

Docker簡介

虛擬化技術

如果說主機時代比拼的是單個服務物理效能(如CPU,記憶體)的強弱,那麼雲時代,最為看重的則是通過虛擬化技術所構建的叢集的處理能力。
虛擬化技術是指將計算機的物理資源進行抽象,封裝成一個個獨立的分割槽,每一個分割槽可執行不同的作業系統,分割槽之間相互隔離,又可共享計算機的物理資源。
廣義來說,虛擬化技術都是基於軟體來實現的。常見的虛擬化產品 有VirtualBox、KVM(騰訊雲)、VMware Workstation和VMware ESX(它在其4.0版,被改名為VMware vSphere)、Xen(阿里雲)

Docker虛擬化技術

docker是一個應用程式,用go語言編寫,基於Linux容器(LXC)設計思想。簡單來說,Docker容器可以理解為一種輕量級的沙盒,每一個沙盒內執行著自己獨有作業系統或者應用程式,相互隔離,容器之間可以通過網路互相通訊。
docker容器的特點:輕量、簡單、易於管理、易於遷移。
舉一個例子,假設現在需要搭建一個LAMP(Linux+Apache+Mysql+Php)的環境,按照傳統做法,需要先安裝Linux的作業系統,而後在作業系統中安裝相關軟體,再然後才能將web網站放到伺服器上面執行。如果使用docker來實現,大致需要2步,拉取一個LAMP的Docker映象,啟動一個docker並配置web網站部署包所在資料夾到docker的對映路徑。不用去關注基礎元件的安裝和維護,Docker映象已經為我們做了這些。

Docker虛擬化技術和虛擬機器(VM)對比

  • 虛擬機器執行在虛擬硬體上, 應用執行在虛擬機器核心上。而 docker daemon 是宿主機上的一個程序, 應用只是 docker daemon 的一個子程序, 換句話說, 應用直接執行在宿主機核心上

  • 虛擬機器需要特殊硬體虛擬化技術支援, 因而只能執行在物理機上。docker 沒有硬體虛擬化, 因而可以執行在物理機、虛擬機器, 甚至 docker 容器內(巢狀執行)

  • 因為沒有硬體虛擬化及多執行一個 Linux 核心的開銷, 應用執行在 docker 上比虛擬機器上更輕、更快

Docker核心元件

映象

Docker映象可以看做是一個部署包,類似web程式的部署包。是一種特殊的檔案系統,內部包含了容器執行時需要的作業系統或程式或庫或靜態檔案,還包含了容器執行時需要的配置引數(如環境變數,使用者等)。映象在構建完成之後,內容就是固定了的,不會被修改。

倉庫

Docker倉庫就是存方Docker映象的空間,並提供專門的上傳和下載功能

容器

Docker容器是一個從Docker映象建立的例項,可以理解為一個執行著的應用程式,這個應用程式有可能是一個執行著的linux作業系統,也可能是一個Nginx服務。Docker容器能夠根據映象建立例項並對外提供資源和服務,得益於Docker引擎,目前Docker引擎有兩種,一個是CE(社群版)一個是EE(企業版)。

Docker入門

使用LinuxMint演示

  • 安裝
sudo apt  install  docker.io

  • 驗證是否安裝成功
sudo  docker info 

  • 拉取hello-world映象
sudo docker pull  hello-world 

  • 檢視本地映象列表
sudo  docker  image   ls 

  • 執行hello-world
sudo   docker run  hello-world

關於hello-world映象的介紹已經在終端中打印出來了。

引用

知乎: https://www.zhihu.com/question/27561972
書籍:《Docker技術入門和實踐》
部落格: http://jm.taobao.org/2016/05/12/introduction-to-docker/