虛擬化技術
如果說主機時代比拼的是單個服務物理性能(如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鏡像的空間,並提供專門的上傳和下載功能
- 官方倉庫DockerHub: https://hub.docker.com/
- DaoCloud: https://hub.daocloud.io/
- 阿里加速器:加速器可以提升獲取Docker官方鏡像的速度。需要先注冊阿里雲賬號,然后根據提示配置加速器。https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
容器
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/