Docker:高速創新的企業集裝箱平臺,在任何地方安全地構建,共享和運行任何應用程序
簡單來講,完成操做系統(軟件)的複製粘貼
Docker官網
Docker Hub:下載鏡像
Docker Hubhtml
使用容器能夠更快地構建和部署新應用程序。Docker容器將軟件及其依賴關係整合到一個標準化的軟件開發單元中,包括運行所需的一切:代碼,運行時,系統工具和庫。這能夠保證您的應用程序始終運行相同,並使協做變得像共享容器映像同樣簡單。
不管是Windows仍是Linux都支持Docker工具和API,並幫助您構建更好的軟件git
Docker使開發人員可以在處理任何應用程序時使用容器 - 不管是新的微服務仍是現有的應用程序。 容器將代碼,配置和依賴關係打包成一個獨立的包,可能使應用程序更安全和可移植。 可是,當您須要管理整個應用程序組合時,僅靠容器是不夠的,由於它們不能直接知足組織的合規性,安全性和運營治理需求。
須要一個企業級容器平臺,以提供大規模的集成軟件生命週期和運營管理工做流程和安全性,同時保證企業支持和通過認證的技術生態系統。 Docker Enterprise容器平臺提供自由選擇,靈活的操做和集成的安全性,所以您能夠放心地在生產中部署,管理和保護您的應用程序。github
What is a Container?
將軟件打包成標準化單元,用於開發,裝運和部署
容器是一個標準的軟件單元,它將代碼及其全部依賴關係打包,以便應用程序從一個計算環境快速可靠地運行到另外一個計算環境。 Docker容器映像是一個輕量級,獨立的可執行軟件包,包含運行應用程序所需的一切:代碼,運行時,系統工具,系統庫和設置。
容器映像在運行時成爲容器,在Docker容器的狀況下 - 映像在Docker Engine上運行時成爲容器。適用於基於Linux和Windows的應用程序,不管基礎架構如何,容器化軟件都將始終運行相同。容器將軟件與其環境隔離開來,並確保它能夠統一運行,儘管開發和分段之間存在差別。
在Docker Engine上運行的Docker容器:
標準:Docker建立了容器的行業標準,所以它們能夠隨處攜帶
輕量級:容器共享機器的操做系統內核,所以不須要每一個應用程序的操做系統,從而提升服務器效率並下降服務器和許可成本
安全:應用程序在容器中更安全,Docker提供業界最強大的默認隔離功能
Docker容器無處不在:Linux,Windows,數據中心,雲,無服務器等。
Docker容器技術於2013年做爲開源Docker Engine推出。
它利用圍繞容器的現有計算概念,特別是在Linux世界中,稱爲cgroups和名稱空間的原語。 Docker的技術是獨一無二的,由於它專一於開發人員和系統運營商將應用程序依賴性與基礎架構分離的要求。
Linux世界的成功推進了與微軟的合做,將Docker容器及其功能引入Windows Server(有時也稱爲Docker Windows容器)。
Docker及其開源項目Moby提供的技術已被全部主要數據中心供應商和雲提供商所利用。其中許多提供商正在利用Docker來提供容器本地IaaS產品。此外,領先的開源無服務器框架利用Docker容器技術。docker
容器和虛擬機具備相似的資源隔離和分配優點,但功能不一樣,由於容器虛擬化操做系統而不是硬件。容器更便攜,更高效。
容器
容器是應用層的抽象,它將代碼和依賴關係打包在一塊兒。 多個容器能夠在同一臺機器上運行,並與其餘容器共享操做系統內核,每一個容器在用戶空間中做爲獨立進程運行。 容器佔用的空間比VM少(容器映像的大小一般爲幾十MB),能夠處理更多的應用程序,而且須要更少的VM和操做系統。
虛擬機
虛擬機(VM)是物理硬件的抽象,將一臺服務器轉變爲多臺服務器。 管理程序容許多臺VM在單臺機器上運行。 每一個VM都包含操做系統的完整副本,應用程序,必要的二進制文件和庫 - 佔用數十GB。 虛擬機也可能很慢啓動。shell
在一塊兒使用的容器和VM在部署和管理應用程序時提供了極大的靈活性數據庫
鏡像,是特殊的文件系統,他包含程序、配置、資源等
容器,鏡像的實例
。就像是類和實例
同樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器能夠被建立、啓動、中止、刪除、暫停等
倉庫,用於保存鏡像的服務
鏡像和容器也能夠類比軟件安裝包和軟件
更多資料安全
以MongoDB Image爲例,在Docker Hub中搜索mongo
一個容器須要pull,create,因此直接執行create命令也是能夠的(會自動pull)bash
docker container create mongo:4.1.12
若是不太清楚使用,能夠查看官方文檔,或者使用help命令查看幫助
固然,這一步也能夠直接經過Kitematic可視化操做服務器
運行Docker Desktop,登陸Docker上註冊的帳號
右鍵菜單欄中打開Kitematic
經過Kitematic完成映射(能夠在powershell中經過命令行完成)
而後就能夠像在本機同樣訪問鏡像啦
架構
咱們但願能在powershell中鏈接MongoDB並執行一些數據庫操做
根據help,咱們應該執行exec命令,而且指定command(bash:命令行)
docker container exec -it mongo bash
而後咱們鏈接了MongoDB,從這裏開始,須要輸入MongoDB的命令
因此咱們須要查看MongoDB的官方文檔,完成本身的目標
容器映射到本機的端口被佔用,或者docker服務啓動時定義的自定義鏈DOCKER因爲某種緣由被清掉
被佔用就處理佔用端口的程序,被清掉就重啓Docker及容器
參考資料:
docker端口映射或啓動容器時報錯Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen
docker 報錯:driver failed programming external connectivity on endpoint lnmp (2f647b8aba729787bf34f6a8