一、容器基礎知識講解
1.1?微服務的部署策略
????????部署單體應用意味著運行大型應用的多個相同副本,通常提供若干臺(N)服務器(物理機或虛擬 機),在每臺服務器上運行若干個(M)應用實例。部署單體應用并不總是簡單明了,但還是比部署微 服務應用簡單。 微服務應用由幾十甚至數百個服務組成。服務用不同的語言和框架寫成,每個都是一個小應用,包括特 定的部署、資源、擴展和監控需求,例如,根據服務需求運行若干數量的服務實例。 此外,每個服務實例必須配套提供適當的 CPU、內存 和 I/O 資源。更具挑戰性的是,盡管如此復雜,部 署服務還必須快速、可靠和性價比高。
1.2?基于主機(物理機或虛機)的多服務實例
????????“基于主機的多服務實例”模式是最為傳統的應用程序部署方法。 在該模式下,軟件開發人員可以提供單個或多個物理機或虛機,同時在每個主機上運行多個服務實例。 此模式有幾種不同的實現形式,其中包括:將每一個服務實例都作為一個單獨的進程,或是在同一進程 中運行多個服務實例。
優點: 由于多個服務實例使用的是同一服務器、及其操作系統,因此它們的資源使用效率相對較 高。
不足: 除非每個實例都是一個單獨的進程,否則您對服務實例的實際控制權并不大。而且,您無法 限制每個實例能夠使用到的資源比例。這將帶來主機內存被大量消耗的隱患。 如果多個服務實例在同一進程中運行,它們之間會缺乏隔離關系。這通常會導致在相同進程 中,某個行為異常的服務能夠直接影響、甚至中斷其他的服務。 由于運營團隊需要了解服務的詳細信息,因此在部署期間,他們可能發生人為錯誤的風險較 高。顯然,開發和運營團隊之間需要通過必要的信息交換,來盡可能地消除復雜性。
1.3?基于容器的服務實例
????????使用這一模式時,用戶將服務打包為容器鏡像。每個容器鏡像就是一個文件系統鏡像,由應用和運行服 務所需的庫構成。有的容器鏡像還包括完整的 Linux 根文件系統,有的則更輕量。 以部署 Java 服務為例,構建的容器鏡像包括 Java 運行時、Apache Tomcat 服務器、以及編譯好的 Java 應用。 一旦將服務打包為容器鏡像,就啟動一到多個容器。通常每個物理機或虛擬主機上會運行多個容器,會 用到 Kubernetes 或 Marathon 這樣的集群管理工具來管理容器。 集群管理工具把主機看做資源池,根據每個容器需要的資源和每個主機上可用的資源來調度容器。
1.4 虛擬機與容器的區別
????????VM(VMware)在宿主機器、宿主機器操作系統的基礎上創建虛擬層、虛擬化的操作系統、虛擬化的倉 庫,然后再安裝應用; Container(Docker容器),在宿主機器、宿主機器操作系統上創建Docker引擎,在引擎的基礎上再安裝應用。
1.5 docker三要素
Docker鏡像
Docker 鏡像就是一個只讀的模板。
例如:一個鏡像可以包含一個完整的 ubuntu 操作系統環境,里面僅安裝了 Apache 或用戶需要的其它 應用 程序。
鏡像可以用來創建 Docker 容器。 Docker 提供了一個很簡單的機制來創建鏡像或者更新現有的鏡像,用戶甚至可以直接從其他人那里下載 一 個已經做好的鏡像來直接使用。
Docker倉庫
倉庫是集中存放鏡像文件的場所。
有時候會把倉庫和倉庫注冊服務器(Registry)混為一談,并不嚴格區分。實際上,倉庫注冊服務器上 往往存放著多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的 標簽(tag)。
倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。
最大的公開倉庫是 Docker Hub,存放了數量龐大的鏡像供用戶下載。
當然,用戶也可以在本地網絡內創建一個私有倉庫。 當用戶創建了自己的鏡像之后就可以使用 push 命令將它上傳到公有或者私有倉庫,這樣下次在另外一臺機器上使用這個鏡像時候,只需要從倉庫上 pull 下來就可以了。
Docker容器
Docker 利用容器來運行應用。
容器是從鏡像創建的運行實例。
它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安 全 的平臺。 可以把容器看做是一個簡易版的 Linux 環境(包括root用戶權限、進程空間、用戶空間和網絡空間等) 和運 行在其中的應用程序。
1. 提供一次性的環境。比如,本地測試他人的軟件、持續集成的時候提供單元測試和構建的環境 2. 提供彈性的云服務。因為 Docker 容器可以隨開隨關,很適合動態擴容和縮容
3. 組建微服務架構。通過多個容器,一臺機器可以跑多個服務,因此在本機就可以模擬出微服務架構
二、docker軟件使用講解
2.1 docker軟件安裝
第一步:
-- 安裝系統工具
yum install -y yum-utils device-mapper-persistent-data lvm2
第二步:
-- 配置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第三步:
-- 更新yum緩存
yum makecache fast
第四步:
-- 安裝docker-CE:
yum -y install docker-ce
第五步:
-- 設置開機自啟
systemctl enable docker-- 啟動
systemctl start docker
第六步:Docker 運行容器前需要本地存在對應的鏡像, 如果鏡像不存在, Docker 會嘗試先從默認鏡像倉庫下載
vi /etc/docker/daemon.json-- 在里面添加地址
{"registry-mirrors": ["https://docker.m.daocloud.io",]
}
第七步:
-- 重新加載
systemctl daemon-reload && systemctl restart docker
第八步:
-- 下載鏡像
docker pull centos:7
第九步:
-- 查看已經下載的鏡像
docker images
2.2 docker軟件基礎使用
-- 創建一個容器
docker create nginx-- 查看正在運行的容器
docker ps-- 查看所有容器
docker ps -a
創建后下面那一串是id
docker rmi 【id或name】 刪除鏡像docker rm -f $(docker ps -aq) 刪除所有容器docker rmi -f $(docker images-q) 刪除所有鏡像