您好,登錄后才能下訂單哦!
本篇內容介紹了“Docker容器定義工具有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
1、容器規范
容器不光是 Docker,還有其他容器,比如 CoreOS 的 rkt。為了保證容器生態的健康發展,保證不同容器之間能夠兼容,包含 Docker、CoreOS、Google在內的若干公司共同成立了一個叫 Open Container Initiative(OCI) 的組織,其目是制定開放的容器規范。
2、容器 runtime
runtime 是容器真正運行的地方。runtime 需要跟操作系統 kernel 緊密協作,為容器提供運行環境。
lxc、runc 和 rkt 是目前主流的三種容器 runtime。
lxc 是 Linux 上老牌的容器 runtime。Docker 最初也是用 lxc 作為 runtime。
runc 是 Docker 自己開發的容器 runtime,符合 oci 規范,也是現在 Docker 的默認 runtime。
rkt 是 CoreOS 開發的容器 runtime,符合 oci 規范,因而能夠運行 Docker 的容器。
3、容器管理工具
光有 runtime 還不夠,用戶得有工具來管理容器啊。容器管理工具對內與 runtime 交互,對外為用戶提供 interface,比如 CLI。這就好比除了 JVM,還得提供 java 命令讓用戶能夠啟停應用不是。
lxd 是 lxc 對應的管理工具。
runc 的管理工具是 docker engine。docker engine 包含后臺 deamon 和 cli 兩個部分。我們通常提到 Docker,一般就是指的 docker engine。
rkt 的管理工具是 rkt cli。
4、容器定義工具
容器定義工具允許用戶定義容器的內容和屬性,這樣容器就能夠被保存,共享和重建。
docker image 是 docker 容器的模板,runtime 依據 docker image 創建容器。
dockerfile 是包含若干命令的文本文件,可以通過這些命令創建出 docker image。
ACI (App Container Image) 與 docker image 類似,只不過它是由 CoreOS 開發的 rkt 容器的 image 格式。
5、Registry
容器是通過 image 創建的,需要有一個倉庫來統一存放 image,這個倉庫就叫做 Registry。
Docker Hub(https://hub.docker.com) 是 Docker 為公眾提供的托管 Registry,上面有很多現成的 image,為 Docker 用戶提供了極大的便利。
Quay.io(https://quay.io/)是另一個公共托管 Registry,提供與 Docker Hub 類似的服務。
6、容器 OS
由于有容器 runtime,幾乎所有的 Linux、MAC OS 和 Windows 都可以運行容器。但這不并沒有妨礙容器 OS 的問世。
容器 OS 是專門運行容器的操作系統。與常規 OS 相比,容器 OS 通常體積更小,啟動更快。因為是為容器定制的 OS,通常它們運行容器的效率會更高。
目前已經存在不少容器 OS,CoreOS、atomic 和 ubuntu core 是其中的杰出代表。
1、什么是容器
容器是一種輕量級、可移植、自包含的軟件打包技術,使應用程序可以在幾乎任何地方以相同的方式運行。開發人員在自己筆記本上創建并測試好的容器,無需任何修改就能夠在生產系統的虛擬機、物理服務器或公有云主機上運行。
Containers vs. virtual machines
容器在 Host 操作系統的用戶空間中運行,與操作系統的其他進程隔離。這一點顯著區別于的虛擬機。
傳統的虛擬化技術,比如 VMWare, KVM, Xen,目標是創建完整的虛擬機。為了運行應用,除了部署應用本身及其依賴(通常幾十 MB),還得安裝整個操作系統(幾 GB)。
虛擬機和容器的區別
由于所有的容器共享同一個 Host OS,這使得容器在體積上要比虛擬機小很多。另外,啟動容器不需要啟動整個操作系統,所以容器部署和啟動速度更快,開銷更小,也更容易遷移。
2、為什么使用容器
如今的系統在架構上較十年前已經變得非常復雜了。以前幾乎所有的應用都采用三層架構(Presentation/Application/Data),系統部署到有限的幾臺物理服務器上(Web Server/Application Server/Database Server)。
而今天,開發人員通常使用多種服務(比如 MQ,Cache,DB)構建和組裝應用,而且應用很可能會部署到不同的環境,比如虛擬服務器,私有云和公有云。
一方面應用包含多種服務,這些服務有自己所依賴的庫和軟件包;另一方面存在多種部署環境,服務在運行時可能需要動態遷移到不同的環境中。這就產生了一個問題:
如何讓每種服務能夠在所有的部署環境中順利運行?
聰明的技術人員從傳統的運輸行業找到了答案。
幾十年前,運輸業面臨著類似的問題。
每一次運輸,貨主與承運方都會擔心因貨物類型的不同而導致損失,比如幾個鐵桶錯誤地壓在了一堆香蕉上。另一方面,運輸過程中需要使用不同的交通工具也讓整個過程痛苦不堪:貨物先裝上車運到碼頭,卸貨,然后裝上船,到岸后又卸下船,再裝上火車,到達目的地,最后卸貨。一半以上的時間花費在裝、卸貨上,而且搬上搬下還容易損壞貨物。
幸運的是,集裝箱的發明解決這個難題。
打一個比方,集裝箱(容器)對于遠洋運輸(應用運行)來說十分重要。集裝箱(容器)能保護貨物(應用),讓其不會相互碰撞(應用沖突)而損壞,也能保障當一些危險貨物發生規模不大的爆炸(應用崩潰)時不會波及其它貨物(應用)但是把貨物(應用)裝載在集裝箱(容器)中并不是一件簡單的事情。而出色的碼頭工人(Docker)的出現解決了這一問題。它(Docker)使得貨物裝載到集裝箱(容器)這一過程變得輕而易舉。對于遠洋運輸(應用運行)而言,用多艘小貨輪(虛擬機)代替原來的大貨輪(實體機)也能保證貨物(應用)彼此之間的安全,但是和集裝箱(容器)比,成本過高,但適合運輸某些重要貨物(應用)。
任何貨物,無論鋼琴還是保時捷,都被放到各自的集裝箱中。集裝箱在整個運輸過程中都是密封的,只有到達最終目的地才被打開。標準集裝箱可以被高效地裝卸、重疊和長途運輸。現代化的起重機可以自動在卡車、輪船和火車之間移動集裝箱。集裝箱被譽為運輸業與世界貿易最重要的發明。
Docker 將集裝箱思想運用到軟件打包上,為代碼提供了一個基于容器的標準化運輸系統。Docker 可以將任何應用及其依賴打包成一個輕量級、可移植、自包含的容器。容器可以運行在幾乎所有的操作系統上。
其實,“集裝箱” 和 “容器” 對應的英文單詞都是 “Container”。
“容器” 是國內約定俗成的叫法,可能是因為容器比集裝箱更抽象,更適合軟件領域的原故吧。
3、容器的優勢
對于開發人員
容器意味著環境隔離和可重復性。開發人員只需為應用創建一次運行環境,然后打包成容器便可在其他機器上運行。另外,容器環境與所在的 Host 環境是隔離的,就像虛擬機一樣,但更快更簡單。
對于運維人員
只需要配置好標準的 runtime 環境,服務器就可以運行任何容器。這使得運維人員的工作變得更高效,一致和可重復。容器消除了開發、測試、生產環境的不一致性。
“Docker容器定義工具有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。