Docker容器(通俗理解)

2021-10-11 02:23:09 字數 1831 閱讀 1111

docker的思想來自於貨櫃,貨櫃解決了什麼問題?

在一艘大船上,可以把貨物規整的擺放起來。並且各種各樣的貨物被貨櫃標準化了,貨櫃和貨櫃之間不會互相影響。那麼我就不需要專門運送水果的船和專門運送化學品的船了。只要這些貨物在貨櫃裡封裝的好好的,那我就可以用一艘大船把他們都運走。docker就是類似的理念。現在都流行雲計算了,雲計算就好比大貨輪。docker就是貨櫃。

不同的應用程式可能會有不同的應用環境,比如.net開發的**和php開發的**依賴的軟體就不一樣,如果把他們依賴的軟體都安裝在乙個伺服器上就要除錯很久,而且很麻煩,還會造成一些衝突。比如iis和apache訪問埠衝突。這個時候你就要隔離.net開發的**和php開發的**。常規來講,我們可以在伺服器上建立不同的虛擬機器在不同的虛擬機器上放置不同的應用,但是虛擬機器開銷比較高。docker可以實現虛擬機器隔離應用環境的功能,並且開銷比虛擬機器小,小就意味著省錢了。

你開發軟體的時候用的是ubuntu,但是運維管理的都是centos,運維在把你的軟體從開發環境轉移到生產環境的時候就會遇到一些ubuntu轉centos的問題,比如:有個特殊版本的資料庫,只有ubuntu支援,centos不支援,在轉移的過程當中運維就得想辦法解決這樣的問題。這時候要是有docker你就可以把開發環境直接封裝轉移給運維,運維直接部署你給他的docker就可以了。而且部署速度快。

在伺服器負載方面,如果你單獨開乙個虛擬機器,那麼虛擬機會占用空閒記憶體的,docker部署的話,這些記憶體就會利用起來。總之docker就是貨櫃原理。

補充1:docker映象和容器可以理解為類和物件;docker容器就是小型虛擬機器。

補充2:

補充3:

補充4:

base映象----提供了乙個基本的作業系統環境,使用者可以根據需要安裝和配置軟體

base映象通常是各種linux發行版的docker映象比如ubuntu、debian、centos等。

base映象只是在使用者空間與發行版一致,kernel版本與發行版是不同的。比如說虛機系統是ubuntu14.04,執行乙個容器是centos系統的,那麼centos使用的其實就是本虛機的kernel。

容器只能使用本地虛機的kernel且不能修改。

映象的分層結構:dockerhub中絕大多數的映象都是通過在base映象中安裝和配置需要的軟體構建出來的。base映象是from scratch開始,新映象是直接在base映象上構建from centos…

新映象是從base映象一層一層疊加生成的,每安裝乙個軟體就等於在現有的映象上增加一層。

docker映象採用分層結構的好處就是共享資源。

可寫的容器層:當容器啟動時,乙個新的可寫層被載入到映象的頂部,這一層就叫容器層,容器層之下都叫映象層。只有容器層是可寫的,容器層下面的所有映象層都是唯讀的。對容器的任何改動都只會發生在容器層中。

這裡,所有的映象層聯合一起組成乙個統一的檔案系統,使用者在容器層看到的就是乙個疊加之後的檔案系統。映象層內部是有上下之分的:

copy-on-write特性說明容器層儲存的是映象變化的部分,不會對映象本身進行任何修改。所以映象可以被多個容器共享。

參考:

docker學習 三 docker通俗理解

感謝docker通俗按照自己的理解來說,就是類似vm虛擬機器一樣的虛擬技術。但是它比虛擬機器更加強大,體積小,執行速度快,啟動和關閉只需要幾秒。相對於普通虛擬機器來說,啟動時間在分鐘級別,占用記憶體大。所以這就是docker出現之後的優勢。docker容器可以打包為映象檔案 類似vm虛擬機器的那些快...

理解Docker容器連線實現容器間通訊

容器連線 link 系統是除了埠對映外,另一種跟容器中應用互動的方式。其會在源容器 db 與接收容器 web 之間穿件乙個隧道,接收容器可以看到源容器指定的資訊。其實乙個可以將具體的容器連線到一起來進行通訊的抽象層。容器的命名 docker的連線系統會根據容器的名稱來進行連線。name用來自定義名稱...

docker容器 Docker 容器逃逸漏洞

2020年12月1日,阿里雲應急響應中心監測到 containerd 官方發布安全更新,修復了 docker 容器逃逸漏洞 cve 2020 15257 漏洞描述 containerd 是乙個控制 runc 的守護程序,提供命令列客戶端和 api,用於在乙個機器上管理容器。在特定網路條件下,攻擊者可...