在docker中,stack的意思是“堆棧式服務(wù)”,是一組可以被編排并具備擴(kuò)展能力的關(guān)聯(lián)service服務(wù),用于多服務(wù)部署和應(yīng)用管理,在compose文件中定義應(yīng)用,通過“docker stack deploy”命令完成部署和管理。
本教程操作環(huán)境:linux7.3系統(tǒng)、docker-1.13.1版、Dell G3電腦。
docker中stack是什么意思
大規(guī)模場景下的多服務(wù)部署和管理是一件很難的事情。
幸運(yùn)的是,Docker Stack 為解決該問題而生,Docker Stack 通過提供期望狀態(tài)、滾動(dòng)升級(jí)、簡單易用、擴(kuò)縮容、健康檢查等特性簡化了應(yīng)用的管理,這些功能都封裝在一個(gè)完美的聲明式模型當(dāng)中。
在筆記本上測試和部署簡單應(yīng)用很容易。但這只能算業(yè)余選手。在真實(shí)的生產(chǎn)環(huán)境進(jìn)行多服務(wù)的應(yīng)用部署和管理,這才是專業(yè)選手的水平。
幸運(yùn)的是,Stack 正為此而生!Stack 能夠在單個(gè)聲明文件中定義復(fù)雜的多服務(wù)應(yīng)用。Stack 還提供了簡單的方式來部署應(yīng)用并管理其完整的生命周期:初始化部署 -> 健康檢查 -> 擴(kuò)容 -> 更新 -> 回滾,以及其他功能!
步驟很簡單。在 Compose 文件中定義應(yīng)用,然后通過 docker stack deploy 命令完成部署和管理。
Compose 文件中包含了構(gòu)成應(yīng)用所需的完整服務(wù)棧。此外還包括了卷、網(wǎng)絡(luò)、安全以及應(yīng)用所需的其他基礎(chǔ)架構(gòu)。然后基于該文件使用 docker stack deploy 命令來部署應(yīng)用。
Stack 是基于 Docker Swarm 之上來完成應(yīng)用的部署。因此諸如安全等高級(jí)特性,其實(shí)都是來自 Swarm。
簡而言之,Docker 適用于開發(fā)和測試。Docker Stack 則適用于大規(guī)模場景和生產(chǎn)環(huán)境。
如果了解 Docker Compose,就會(huì)發(fā)現(xiàn) Docker Stack 非常簡單。事實(shí)上在許多方面,Stack 一直是期望的 Compose——完全集成到 Docker 中,并能夠管理應(yīng)用的整個(gè)生命周期。
從體系結(jié)構(gòu)上來講,Stack 位于 Docker 應(yīng)用層級(jí)的最頂端。Stack 基于服務(wù)進(jìn)行構(gòu)建,而服務(wù)又基于容器,如下圖所示。
在后續(xù)的講解中會(huì)一直使用示例應(yīng)用 AtSea Shop。該示例托管在 github 的 dockersamples/atsea-sample-shop-app 庫中,基于 apache 2.0 許可證開源。
使用該應(yīng)用是因?yàn)槠鋸?fù)雜度適中,不會(huì)因?yàn)樘珡?fù)雜而難以完整解釋。除此之外,該應(yīng)用還是個(gè)多服務(wù)應(yīng)用,并且利用了認(rèn)證和安全相關(guān)的技術(shù)。應(yīng)用架構(gòu)如下圖所示。
推薦學(xué)習(xí):《docker視頻教程》