一现横、Docker
? ? 用來裝應用的容器手趣,也是一種集裝箱的思想;
????Docker的特點:集裝箱拱层、標準化:運輸方式 存儲方式 API接口弥臼、隔離
解決運行環(huán)境不一致問題,快速擴展和可伸縮
1根灯、Docker的三個概念:鏡像 倉庫 容器?
Docker思想就是:去倉庫把鏡像拉到本地径缅,然后用命令把鏡像運行起來變成容器
docker的分層文件系統(tǒng)就是鏡像
倉庫 hub.docker.com
2、Mac OS下載安裝docker:
https://www.docker.com/products/docker#/mac
3烙肺、Dockerfile
????????Dockerfile是一個包含用于組合映像的命令的文本文檔纳猪。可以使用在命令行中調(diào)用任何命令桃笙。 Docker通過讀取Dockerfile中的指令自動生成映像氏堤。
????????docker build命令用于從Dockerfile構建映像。Dockerfile從上到下的順序運行Dockerfile的指令搏明,FROM用于指定基礎鏡像鼠锈,另外還有RUN,CMD星著,F(xiàn)ROM购笆,EXPOSE,ENV等指令强饮。(文章https://www.cnblogs.com/panwenbin-logs/p/8007348.html?中關于Dockerfile的指令講解的詳細)
FROM:指定基礎鏡像由桌,必須為第一個命令
MAINTAINER:?維護者信息
RUN:構建鏡像時執(zhí)行为黎,用于在鏡像容器中執(zhí)行命令
CMD:構建容器后調(diào)用邮丰,也就是在容器啟動時才進行調(diào)用
ADD:將本地文件添加到容器中
ENV:設置環(huán)境變量
WORKDIR:工作目錄,類似于cd命令
下圖為一個簡單的Dockerfile指令文件
4铭乾、docker常用命令
docker pull [OPTION] NAME[:TAG]? ?拉取鏡像
docker images [OPTIONS] [REPOSITORY[:TAG]]? 查看鏡像
docker run?[OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]? 運行鏡像
docker ps? 當前機器上正在運行的容器
docker run -d IMAGE? 后臺運行容器并且打印容器ID
docker build -t NAME:TAG? 創(chuàng)建鏡像
docker stop 停止運行鏡像
docker restar ID 重啟容器
二剪廉、Kubernetes (k8s)
? ?基于容器技術的分布式架構方案,集群管理炕檩;
k8s的思想是:根據(jù)參數(shù)文件取部署應用斗蒋,根據(jù)命令去對集群進行管理,其實就是高度封裝以往復雜的運維
1笛质、結(jié)構
master主服務器
node 用于部署應用容器的服務器
2泉沾、配置yaml文件
Deployment:定義pod的部署信息
Service:將哪些pod組合成一個service
若干個pod組成一個service,對外提供服務
副本:是指一個pod的多個實例
NameSpace:多租戶的資源隔離妇押,在測試環(huán)境中劃分多套測試環(huán)境
3跷究、k8s安裝(很多需要翻墻下載):
三、持續(xù)集成
CI 是一種軟件開發(fā)實踐敲霍,每次集成都通過自動化的構建(編譯俊马、打包丁存、部署、自動化測試)來驗證
快速反饋和解決
jenkins是一種持續(xù)集成的工具
Registry :docker pull registry
我們完成這樣一個事情:
Jenkins設置構建(參數(shù)化構建柴我,代碼庫地址解寝,maven構建命令)后,將jar包打包成docker鏡像艘儒,并推送到registry鏡像倉庫中聋伦,應用的yaml文件拷貝到k8s的master上,讓k8s根據(jù)配置啟動應用界睁。
Jenkins的更多配置:代碼檢查嘉抓、單測、接口測試晕窑、郵件通知