摘要:docker 是乙個客戶端-伺服器(c/s)架構程式。docker 客戶端只需要向 docker 伺服器或者守護程序發出請求,伺服器或者守護程序將完成所有工作並返回結果。docker 提供了乙個命令列工具 docker 以及一整套 restful api。
通過下圖可以得知,docker 在執行時分為 docker 引擎(服務端守護程序) 和 客戶端工具,我們日常使用各種 docker 命令,其實就是在使用 客戶端工具 與 docker 引擎 進行互動。
docker 是乙個客戶端-伺服器(c/s)架構程式。docker 客戶端只需要向 docker 伺服器或者守護程序發出請求,伺服器或者守護程序將完成所有工作並返回結果。docker 提供了乙個命令列工具 docker 以及一整套 restful api。你可以在同一臺宿主機上執行 docker 守護程序和客戶端,也可以從本地的 docker 客戶端連線到執行在另一台宿主機上的遠端 docker 守護程序。
乙個物理或者虛擬的機器用於執行 docker 守護程序和容器。
映象(image)和容器(container)的關係,就像是物件導向程式設計中的類和例項一樣,映象是靜態的定義,容器是映象執行時的實體。容器可以被建立、啟動、停止、刪除、暫停等。
docker 支援通過擴充套件現有映象,建立新的映象。實際上,docker hub 中 99% 的映象都是通過在 base 映象中安裝和配置需要的軟體構建出來的。
從上圖可以看到,新映象是從 base 映象一層一層疊加生成的。每安裝乙個軟體,就在現有映象的基礎上增加一層。
映象分層最大的乙個好處就是共享資源。比如說有多個映象都從相同的 base 映象構建而來,那麼 docker host 只需在磁碟上儲存乙份 base 映象;同時記憶體中也只需載入乙份 base 映象,就可以為所有容器服務了。而且映象的每一層都可以被共享。
如果多個容器共享乙份基礎映象,當某個容器修改了基礎映象的內容,比如 /etc 下的檔案,這時其他容器的 /etc 是不會被修改的,修改只會被限制在單個容器內。這就是容器 copy-on-write 特性。
當容器啟動時,乙個新的可寫層被載入到映象的頂部。這一層通常被稱作「容器層」,「容器層」之下的都叫「映象層」。
所有對容器的改動 - 無論新增、刪除、還是修改檔案都只會發生在容器層中。只有容器層是可寫的,容器層下面的所有映象層都是唯讀的。
映象層數量可能會很多,所有映象層會聯合在一起組成乙個統一的檔案系統。如果不同層中有乙個相同路徑的檔案,比如 /a,上層的 /a 會覆蓋下層的 /a,也就是說使用者只能訪問到上層中的檔案 /a。在容器層中,使用者看到的是乙個疊加之後的檔案系統。
只有當需要修改時才複製乙份資料,這種特性被稱作 copy-on-write。可見,容器層儲存的是映象變化的部分,不會對映象本身進行任何修改。
總結下來就是:容器層記錄對映象的修改,所有映象層都是唯讀的,不會被容器修改,所以映象可以被多個容器共享。
實際上我們的容器就好像是乙個簡易版的作業系統,只不過系統中只安裝了我們的程式執行所需要的環境,前邊說到我們的容器是可以刪除的,那如果刪除了,容器中的程式產生的需要持久化的資料怎麼辦呢?容器執行的時候我們可以進容器去檢視,容器一旦刪除就什麼都沒有了。
所以資料卷就是來解決這個問題的,是用來將資料持久化到我們宿主機上,與容器間實現資料共享,簡單的說就是將宿主機的目錄對映到容器中的目錄,應用程式在容器中的目錄讀寫資料會同步到宿主機上,這樣容器產生的資料就可以持久化了,比如我們的資料庫容器,就可以把資料儲存到我們宿主機上的真實磁碟中。
docker 用 registry 來儲存使用者構建的映象。registry 分為公共和私有兩種。docker 公司運營公共的 registry 叫做 docker hub。使用者可以在 docker hub 註冊賬號,分享並儲存自己的映象。
docker 公司提供了公共的映象倉庫 hub.docker.com(docker 稱之為 repository)提供了龐大的映象集合供使用。
乙個 docker registry 中可以包含多個倉庫(repository);每個倉庫可以包含多個標籤(tag);每個標籤對應乙個映象。
通常,乙個倉庫會包含同乙個軟體不同版本的映象,而標籤對應該軟體的各個版本。我們可以通過 《倉庫名》:《標籤》 的格式來指定具體是這個軟體哪個版本的映象。如果不給出標籤,將以 latest 作為預設標籤。
此外,docker 公司提供了公共的映象倉庫 hub.docker.com(docker 稱之為 repository),github connect,自動構建映象,大大簡化了應用分發、部署、公升級流程。加上 docker 可以非常方便的建立各種自定義的映象檔案,這些都是 docker 成為最流行的容器技術的重要因素。
docker 入門學習
記錄下簡單的docker命令以備查詢 1.拉取映象 docker pull 選項 docker registry 位址 埠號 倉庫名 標籤 刪除映象 docker image rm centos2.執行容器 docker run it rm ubuntu 16.04 bash it 這是兩個引數,乙...
Docker入門學習
docker是一種虛擬化技術,起初是dotcloud公司的業餘技術,目標是實現輕量級的作業系統,區別是傳統虛擬機器可以虛擬各種東西,但是docker虛擬化的系統只能是linux,並且docker實現的基礎是linux lxc 這是docker的缺點,但是這並不影響我們使用docker 開發中,環境的...
Docker入門 學習筆記
這兩天入門下docker的容器技術,感覺挺實用的,所以記錄下學習心得。docker是什麼?要了解它是什麼,第一步要做的是什麼,還用問 當然是先去官網瞧瞧啊。很明顯啊,docker is the leading containers as a service platform.英語不好,別怪我,還等啥...