什麼是容器?
容器技術是一種虛擬化的方案
傳統虛擬機是通過中間層,將一臺或多臺獨立的機器虛擬運行在硬件之上
而容器時直接運行在系統內核之上的用戶空間
因此,容器虛擬化也被稱爲操作系統虛擬化
由於運行在操作系統上,所以容器只能運行相同或相似內核的操作系統
什麼是docker?
docker是能將開發的應用程序自動部署到容器的開源引擎。
Github地址:https://github.com/docker/docker
docker是docker.lnc公司開源的一個基於LXC技術之上構建的Container容器引擎,源代碼託管在GitHub上,基於Go語言並遵從Apache2.0協議開源
docker是通過內核虛擬化技術(namespaces(命令空間)及cgroups(控制組)等)來提供容器的資源隔離與安全保障等,由於docker通過操作系統層的虛擬化實現隔離,所以docker容器在運行時,不需要虛擬機(VM)額外的操作系統開銷,提高資源利用率。
注:此內核是linux內核
docker官網:www.docker.com
hub.docker.com 上傳下載docker鏡像的網站
docker的特別之處:
docker在虛擬化的容器執行環境中,增加了一個應用程序部署引擎。
該引擎的目標:
提供一個輕量快速的環境,能夠運行開發者的程序,便於方便高效的從開發者環境部署到測試環境,然後再部署到生產環境。
docker的優點:
1、提供簡單輕量的建模方式,運行秒級
2、職責的邏輯分離。開發人員只需要關係容器中運行的程序,而運維人員只需要關心如何管理程序。
docker設計的目的性就是加強開發人員寫代碼的開發環境與應用環境要部署的生產環境的一致性。
3、快速高效的開發生命週期。
縮短代碼從開發到測試,再到上線運行的生命週期。讓應用和程序具備可移植性。在容器中開發,以容器的形式去交付。
4、鼓勵使用面向服務的架構。
docker推薦單個容器只運行一個程序或者一個進程。這樣就形成了一個分佈式的應用程序模型。
在這種模型下,應用程序或服務都可以表示爲一系列內部互聯的容器,從而使分佈式互聯的程序擴展或調試應用程序都變得非常簡單。
這就是在開發中常用的思想:高內聚低耦合
docker的使用場景:
1、使用docker容器開發、測試、部署服務;
2、創建隔離的運行環境
3、搭建測試環境
4、構建多用戶的平臺即服務(PaaS)基礎設施
5、提供軟件即服務(SaaS)應用程序
6、高性能、超大規模的宿主機部署
三大核心理念:
構建 基於鏡像構建容器
運輸 傳輸到系統中
運行 運行於容器
構建一個容器,放在某個地方,然後運行起來
docker裏面運行的是應用(APP),這個應用可以是 tomcat、nginx、apache等服務。
docker組成:
1、docker客戶端/守護進程
cs架構(客戶端架構)
docker client
docker server
bs架構:web架構
web網站網頁
服務器
一般使用客戶端與服務端交互
2、docker組件:
鏡像(image)
docker容器的基石。容器基於鏡像啓動和運行,鏡像就好比容器的源代碼,保存了用於啓動容器的各種條件。
層疊的只讀文件系統。
聯合加載
最底端是引導文件系統,即bootfs。實際上,當一個容器啓動後,引導文件系統就卸載
第二層是root文件系統,位於bootfs之上。它可以是一種或者多種文件系統
容器(Container)
倉庫(Repository)
公有倉庫 docker hub
私有倉庫
centos版本中安裝docker:
注:centos虛擬機必須要聯網,不然無法安裝。
配置repo倉庫
cd /etc/yum.repo.d/
vi docker.repo
---
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg---
.
2 安裝docker
yum install -y docker
檢查有沒有安裝方法: docker version
.
3 啓動並設置開機自啓
systemctl enable docker
systemctl start docker到此,docker容器安裝完成,並且啓動成功。