簡介
Docker:高速創新的企業集裝箱平台,在任何地方安全地構建,共享和運行任何應用程序
簡單來說,完成操作系統(軟件)的復制粘貼
Docker官網
Docker Hub:下載鏡像
Docker Hub
概念
Docker for Developers
使用容器可以更快地構建和部署新應用程序。Docker容器將軟件及其依賴關系整合到一個標准化的軟件開發單元中,包括運行所需的一切:代碼,運行時,系統工具和庫。這可以保證您的應用程序始終運行相同,並使協作變得像共享容器映像一樣簡單。
無論是Windows還是Linux都支持Docker工具和API,並幫助您構建更好的軟件
Docker for IT Operations
Docker使開發人員能夠在處理任何應用程序時使用容器 - 無論是新的微服務還是現有的應用程序。 容器將代碼,配置和依賴關系打包成一個獨立的包,可能使應用程序更安全和可移植。 但是,當您需要管理整個應用程序組合時,僅靠容器是不夠的,因為它們不能直接滿足組織的合規性,安全性和運營治理需求。
需要一個企業級容器平台,以提供大規模的集成軟件生命周期和運營管理工作流程和安全性,同時保證企業支持和經過認證的技術生態系統。 Docker Enterprise容器平台提供自由選擇,靈活的操作和集成的安全性,因此您可以放心地在生產中部署,管理和保護您的應用程序。
什么是容器
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容器技術。
比較容器和虛擬機

容器和虛擬機具有類似的資源隔離和分配優勢,但功能不同,因為容器虛擬化操作系統而不是硬件。容器更便攜,更高效。
容器
容器是應用層的抽象,它將代碼和依賴關系打包在一起。 多個容器可以在同一台機器上運行,並與其他容器共享操作系統內核,每個容器在用戶空間中作為獨立進程運行。 容器占用的空間比VM少(容器映像的大小通常為幾十MB),可以處理更多的應用程序,並且需要更少的VM和操作系統。
虛擬機
虛擬機(VM)是物理硬件的抽象,將一台服務器轉變為多台服務器。 管理程序允許多台VM在單台機器上運行。 每個VM都包含操作系統的完整副本,應用程序,必要的二進制文件和庫 - 占用數十GB。 虛擬機也可能很慢啟動。
容器和虛擬機在一起

在一起使用的容器和VM在部署和管理應用程序時提供了極大的靈活性
鏡像、容器、倉庫
鏡像,是特殊的文件系統,他包含程序、配置、資源等
容器,鏡像的實例。就像是類和實例一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等
倉庫,用於保存鏡像的服務
鏡像和容器也可以類比軟件安裝包和軟件
更多資料
安裝鏡像
以MongoDB Image為例,在Docker Hub中搜索mongo

一個容器需要pull,create,所以直接執行create命令也是可以的(會自動pull)
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報錯處理
driver failed programming external connectivity on endpoint
容器映射到本機的端口被占用,或者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
