Docker是一種容器化技術(shù),可以將應(yīng)用程序和它的所有依賴關(guān)系打包到一個可移植的容器中,實現(xiàn)應(yīng)用程序在不同計算平臺上的快速部署、擴展和管理。
物理機A 物理機B +--------+ +--------+ | Docker | | Docker | +--------+ +--------+ ↓ ↓ +--------------+ +------------------+ | 應(yīng)用程序容器 | | 應(yīng)用程序容器 | +--------------+ +------------------+ | 應(yīng)用程序 | | 應(yīng)用程序 | +--------------+ +------------------+ | 所有依賴關(guān)系 | | 所有依賴關(guān)系 | +----------------------------------+-----------------+
當(dāng)應(yīng)用程序容器在任一計算平臺上運行時,都可以得到一致的運行環(huán)境以及相同的運行結(jié)果,避免了由于計算平臺的環(huán)境差異導(dǎo)致的應(yīng)用程序異常。
物理機A 物理機B +--------+ +------------------------+ +--------+ +------------------------+ | Docker | | 應(yīng)用程序容器 | | Docker | | 應(yīng)用程序容器 | +--------+ | 運行環(huán)境&應(yīng)用程序代碼 | +--------+ | 運行環(huán)境&應(yīng)用程序代碼 | ↓ | 一致性運行結(jié)果 | ↓ | 一致性運行結(jié)果 | +----------------+ +------------------------+ +------------------+ | 計算平臺A | | 計算平臺B | | 計算平臺C | +----------------+ +------------------------+ +------------------+
在大規(guī)模的分布式計算平臺中,Docker可以利用集群管理工具比如Docker Swarm、Kubernetes等將應(yīng)用程序容器部署到多臺計算機上進行并行計算,實現(xiàn)計算平臺的高可用性和高有效性。
物理機A 物理機B 物理機C 物理機D +--------+ +--------+ +--------+ +--------+ | Docker | | Docker | | Docker | | Docker | +--------+ +--------+ +--------+ +--------+ ↓ ↓ ↓ ↓ +--------------+ +--------------+ +--------------+ +--------------+ | 應(yīng)用程序容器 | | 應(yīng)用程序容器 | | 應(yīng)用程序容器 | | 應(yīng)用程序容器 | +--------------+ +--------------+ +--------------+ +--------------+ | 應(yīng)用程序 | | 應(yīng)用程序 | | 應(yīng)用程序 | | 應(yīng)用程序 | +--------------+ +--------------+ +--------------+ +--------------+ | 所有依賴關(guān)系 | | 所有依賴關(guān)系 | | 所有依賴關(guān)系 | | 所有依賴關(guān)系 | +----------------+ +-----------------+ +-----------------+ +----------------+ | | | | | | 計算平臺A | 計算平臺B | 計算平臺C | 計算平臺D | | | | | | +----------------+ +-----------------+ +-----------------+ +----------------+
Docker可以有效地幫助計算平臺管理者實現(xiàn)對應(yīng)用程序的快速部署、打包、復(fù)制和卸載,同時確保應(yīng)用程序在不同的計算平臺上的可重復(fù)部署性以及一致結(jié)果性。