1.一個軟件從開發到部署的問題 : 運行環境和配置python
2.軟件是否能夠帶環境安裝 : 安裝時將開發的環境如出一轍的複製過來docker
一款產品從開發到上線,從操做系統,到運行環境,再到應用配置 做爲開發 + 運維之間的協做咱們須要關心不少東西,這也是不少互聯網公司都不得不面對的問題 特別是各類版本的迭代以後,不一樣版本環境的兼容,對運維人員都是考驗 "Docker"之因此發展如此迅速,也是由於它對此給出了一個標準化的解決方案
🎅示例1 你在金魚店的魚缸裏買一條小金魚回去,養在家裏的盆子裏,那麼小金魚有可能水土不服XX,若是你把連魚帶缸的買回去就不會出現這種狀況了,由於生存環境沒有改變 🎅誇張示例2 若是咱們搬家,通常是把傢俱之類的一件一件的搬到新房子裏去,而後到新房子裏有從新佈置,"Docker"的理念就是直接把房子剷起來放置到新的住址,那麼裏面的配置都不用動了,直接能夠入住
ps : docker理念:一次構建到處運行服務器
🎅缺點 1. 資源佔用多 2. 冗餘步驟多 3. 啓動慢(分鐘級)
🎅傳統虛擬技術: 🔰虛擬出一堆硬件, 運行一個完整的操做系統 🔰而後在該系統上再運行一系列的應用程序 🎅容器虛擬化技術: 🔰容器內的應用進程直接運行在宿主的內核, 容器內沒有機子的內核 🔰而且沒有進行硬件的虛擬,所以更輕便 (只包含業務所須要的環境:"docker"基礎鏡像就"170M") 🔰每一個容器之間相互隔離, 每一個容器都有本身的文件系統, 容器之間不會相互影響, 能區分計算資源
Docker理念 :一次構建到處運行架構
🎅傳統的應用開發完成後,須要提供一堆安裝程序和配置說明文檔,安裝部署後需根據配置文檔進行繁雜的配置才能正常運行 🎅Docker化以後只須要交付少許容器鏡像文件,在正式生產環境加載鏡像並運行便可,應用安裝配置在鏡像裏已經內置好,大大節省部署配置和測試驗證時間
🎅隨着微服務架構和Docker的發展,大量的應用會經過微服務方式架構,應用的開發構建將變成搭樂高積木同樣,每一個"Docker容"器將變成一塊"積木","應用的升級將變得很是容易" 🎅當現有的容器不足以支撐業務處理時,可經過鏡像運行"新的容器進行快速擴容",使應用系統的擴容從原先的天級變成分鐘級甚至秒級
🎅應用容器化運行後,生產環境運行的應用可與開發、測試環境的應用"高度一致",容器會將應用程序相關的環境和狀態徹底封裝起來,不會由於底層基礎架構和操做系統的不一致性給應用帶來影響,產生新的BUG 🎅當出現程序異常時,也能夠經過測試環境的相同容器進行快速定位和修復
🎅Docker是內核級虛擬化,其不像傳統的虛擬化技術同樣須要額外的Hypervisor支持,因此在一臺物理機上"能夠運行不少個容器實例",可大大"提高物理服務器的CPU和內存的利用率"
🎅倉庫註冊服務器: 🔰存放着多個倉庫 🎅倉庫: 🔰 每一個倉庫包含多個鏡像,每一個鏡像有不一樣的標籤('tag':相似於版本號) 🔰倉庫分爲公開倉庫(Public)和私有倉庫(Private)兩種形式 🔰最大的公開倉庫是 "Docker Hub:(https://hub.docker.com/)"