摘要:本人的學(xué)習(xí)筆記,主要是對(duì)我的第一本書從入門到實(shí)踐的學(xué)習(xí)記錄,并結(jié)合其他各種資源的學(xué)習(xí),歡迎大牛們指點(diǎn)。最新的容器引入了容器如,容器不再僅僅是一個(gè)單純的運(yùn)行環(huán)境。鏡像是基于聯(lián)合文件系統(tǒng)的一種層式的結(jié)構(gòu),由一系列指令一步步構(gòu)建處理。
本人的學(xué)習(xí)筆記,主要是對(duì)《我的第一本Docker書》、《Docker —— 從入門到實(shí)踐》的學(xué)習(xí)記錄,并結(jié)合其他各種資源的學(xué)習(xí),歡迎大牛們指點(diǎn)。
容器簡(jiǎn)介管理程序虛擬化(hypervisor virtualization, HV)是通過(guò)中間虛擬運(yùn)行于物理硬件之上。而容器是直接運(yùn)行在操作系統(tǒng)內(nèi)核之上用戶空間。因此,容器虛擬化運(yùn)行也成為“操作系統(tǒng)級(jí)虛擬化”,容器技術(shù)可以讓多個(gè)獨(dú)立的用戶空間運(yùn)行在同一臺(tái)宿主機(jī)上。
容器只能運(yùn)行與底層宿主機(jī)相同或類似的操作系統(tǒng)。例如,可以在 Ubuntu 服務(wù)器中運(yùn)行 RedHat Enterprise Linux,但是不能運(yùn)行 Windows。
在超大規(guī)模的多租戶服務(wù)不熟、輕量級(jí)沙盒以及對(duì)安全要求不太高的隔離環(huán)境中,容器技術(shù)非常流行。比如“權(quán)限隔離監(jiān)牢”(chroot jail),它建立一個(gè)隔離的目錄環(huán)境來(lái)運(yùn)行進(jìn)程,如果權(quán)限隔離監(jiān)牢正在運(yùn)行的進(jìn)程被入侵者攻破,入侵者便會(huì)發(fā)現(xiàn)自己身陷“身陷囹圄”,因?yàn)闄?quán)限不足被困在容器創(chuàng)建的目錄中,無(wú)非對(duì)宿主機(jī)進(jìn)行進(jìn)一步的破壞。
最新的容器引入了 Open、Solaris Zones、Linux 容器(如 lxc),容器不再僅僅是一個(gè)單純的運(yùn)行環(huán)境。在自己的權(quán)限范圍內(nèi),容器更像是一個(gè)完整的宿主機(jī)。
Docker 得益于現(xiàn)代 Linux 內(nèi)核特性,如控件組(control group)、命名空間(namespace)技術(shù),容器和宿主機(jī)直接的隔離更加徹底,容器有獨(dú)立的網(wǎng)絡(luò)和存儲(chǔ)棧,還擁有自己的資源管理能力,是的同一臺(tái)宿主機(jī)中的多個(gè)容器可以友好地共存。
容器開銷低,和傳統(tǒng)的虛擬化以及半虛擬化(paravirtualization)相比,容器運(yùn)行不需要模擬層(emulation layer)和管理層(hypervisor layer),二手使用操作系統(tǒng)的系統(tǒng)調(diào)用接口,著降低了運(yùn)行單個(gè)容器所吸引的開銷,也是的宿主機(jī)中可以運(yùn)行更多的容器。
但容器本身比較復(fù)雜,不易安裝,管理和自動(dòng)化也很困難,而Docker就是為改變著一切而生的。
Docker簡(jiǎn)介Docker是一個(gè)能把開發(fā)應(yīng)用程序自動(dòng)不熟到容器的開源引擎。由Docker 團(tuán)隊(duì)編寫,基于Apache 2.0 開源協(xié)議發(fā)行。
在 LXC 的基礎(chǔ)上 Docker 進(jìn)行了進(jìn)一步的封裝,讓用戶不需要去關(guān)心容器的管理,使得操作更為簡(jiǎn)便。用戶操作 Docker 的容器就像操作一個(gè)快速輕量級(jí)的虛擬機(jī)一樣簡(jiǎn)單。
Docker在虛擬化的容器執(zhí)行環(huán)境中增加了一個(gè)應(yīng)用部署引擎,該引擎的目標(biāo)是提供一個(gè)輕量、快速的環(huán)境,能夠運(yùn)行開發(fā)者的程序,并方便高效地將程序從開發(fā)者的筆記本部署到測(cè)試環(huán)境,然后再部署到生產(chǎn)環(huán)境。Docker機(jī)器簡(jiǎn)潔,它所需要的全部環(huán)境只是一臺(tái)僅僅安裝了兼容版本的Linux內(nèi)核和二進(jìn)制文件最小限的宿主機(jī)。而Docker的目標(biāo)是提供一些這些東西:
提供簡(jiǎn)單、輕量的建模方式Docker上手非???,只要幾分鐘就能把自己的程序“Docker化”(Dockerize)。Docker依賴于“寫時(shí)付至”(copy-on-write)
模型,是修改應(yīng)用程序也非常迅速,可以說(shuō)是“隨心所至,代碼即改”。
隨后就可以創(chuàng)建容器來(lái)運(yùn)行程序了。大多數(shù)Docker容器只需不到1秒鐘即可啟動(dòng)。去除了管理程序的開銷,性能較高,可以同時(shí)運(yùn)行多個(gè)容器。
職責(zé)的邏輯分離使用Docker,開發(fā)人員只需關(guān)系容器運(yùn)行的程序,運(yùn)維人員只需關(guān)系如何管理容器。加強(qiáng)了開發(fā)人員寫代碼的環(huán)境與程序部署的生產(chǎn)環(huán)境的一致性。
快速、高效的開發(fā)生命周期縮短代碼從開發(fā)、測(cè)試、部署、上下的周期,讓應(yīng)用可移植、易構(gòu)建、易協(xié)作。
鼓勵(lì)使用面向服務(wù)的架構(gòu)Docker推薦單個(gè)容器運(yùn)行一個(gè)應(yīng)用程序或進(jìn)程,形成分布式的應(yīng)用程序模型,這樣,程序或服務(wù)都可以表示為一系列內(nèi)部互聯(lián)的容器,使分布式部署應(yīng)用程序,擴(kuò)展或調(diào)試程序標(biāo)的簡(jiǎn)單。當(dāng)然也可以在一個(gè)容器里運(yùn)行多個(gè)進(jìn)程的應(yīng)用程序。
Docker 組件 鏡像Docker 鏡像就是一個(gè)只讀的模板。例如:一個(gè)鏡像可以包含一個(gè)完整的 ubuntu 操作系統(tǒng)環(huán)境,里面僅安裝了 Apache 或用戶需要的其它應(yīng)用程序。
鏡像是Docker生命周期中的“構(gòu)建”部分,可以用來(lái)創(chuàng)建 Docker 容器。
Docker 提供了一個(gè)很簡(jiǎn)單的機(jī)制來(lái)創(chuàng)建鏡像或者更新現(xiàn)有的鏡像,可以當(dāng)做容器的“源代碼”,它體積很小,便于分享、存儲(chǔ)、更新。用戶甚至可以直接從其他人那里下載一個(gè)已經(jīng)做好的鏡像來(lái)直接使用。
鏡像是基于聯(lián)合(union)文件系統(tǒng)的一種層式的結(jié)構(gòu),由一系列指令一步步構(gòu)建處理。例如:
添加一個(gè)文件
執(zhí)行一個(gè)命令
打開一個(gè)端口
容器Docker利用容器來(lái)運(yùn)行應(yīng)用。Docker可以幫你構(gòu)建和部署容器,你只需要把自己的程序或服務(wù)打包到容器里即可。容器是基于鏡像啟動(dòng)的,容器可以運(yùn)行多個(gè)進(jìn)程,所以可以認(rèn)為,鏡像是Docker生命周期的構(gòu)建/打包階段,容器是啟動(dòng)/執(zhí)行階段。
打個(gè)比方,容器是集裝箱,鏡像是貨物。
容器是從鏡像創(chuàng)建的運(yùn)行實(shí)例。它可以被啟動(dòng)、開始、停止、刪除。每個(gè)容器都是相互隔離的、保證安全的平臺(tái)。
可以把容器看做是一個(gè)簡(jiǎn)易版的 Linux 環(huán)境(包括root用戶權(quán)限、進(jìn)程空間、用戶空間和網(wǎng)絡(luò)空間等)和運(yùn)行在其中的應(yīng)用程序。
總結(jié)起來(lái),Docker容器就是:
一個(gè)鏡像格式
一系列標(biāo)準(zhǔn)的操作
一個(gè)執(zhí)行環(huán)境
倉(cāng)庫(kù)(registry)注:鏡像是只讀的,容器在啟動(dòng)的時(shí)候創(chuàng)建一層可寫層作為最上層。
倉(cāng)庫(kù)用于保存用戶構(gòu)建的鏡像,分為公有、私有。Docker公司運(yùn)營(yíng)的公共倉(cāng)庫(kù)叫Docker Hub,用戶可以在Docker Hub注冊(cè)賬號(hào),保存并分享自己的鏡像。 國(guó)內(nèi)的公開倉(cāng)庫(kù)有 Docker Pool等。用戶也可以在本地網(wǎng)絡(luò)內(nèi)創(chuàng)建一個(gè)私有倉(cāng)庫(kù)。
當(dāng)用戶創(chuàng)建了自己的鏡像之后就可以使用 push 命令將它上傳到公有或者私有倉(cāng)庫(kù),這樣下次在另外一臺(tái)機(jī)器上使用這個(gè)鏡像時(shí)候,只需要從倉(cāng)庫(kù)上 pull 下來(lái)就可以了。
注:Docker 倉(cāng)庫(kù)的概念跟 Git 類似,注冊(cè)服務(wù)器可以理解為 GitHub 這樣的托管服務(wù)。
本文地址
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26367.html
摘要:一個(gè)鏡像可以放到另一個(gè)京廣線的頂部,位于下面的鏡像稱為父鏡像,最底部的稱為基礎(chǔ)鏡像。鏡像是基于聯(lián)合文件系統(tǒng)的一種層式的結(jié)構(gòu),由一系列指令一步步構(gòu)建處理。拉取鏡像使用命令啟動(dòng)一個(gè)鏡像時(shí),會(huì)檢查本地是否存在該鏡像。 什么是鏡像 Docker鏡像時(shí)由文件系統(tǒng)疊加而成,最底端是一個(gè)引導(dǎo)文件系統(tǒng),即bootfs,這很像典型的Linux/Unix的引導(dǎo)文件系統(tǒng)。Docker用戶幾乎永遠(yuǎn)不會(huì)和引導(dǎo)...
摘要:,,當(dāng)前使用的容器名為,為。守護(hù)式容器沒有交互式會(huì)話,適合運(yùn)行應(yīng)用程序和服務(wù)。大多數(shù)時(shí)候是需要以守護(hù)式來(lái)運(yùn)行容器。與之前創(chuàng)建的容器相比,沒有返回會(huì)話,只是返回了一個(gè)容器。刪除容器運(yùn)行中的容器無(wú)法刪除,必須先停止。 windows 7, docker 1.3.2,當(dāng)前使用的容器名為aoct,ID為614122c0aabb。 開啟已經(jīng)停止的容器 可以start + 容器名 $ sud...
摘要:郵件激活后,可以測(cè)試登錄這條命令會(huì)完成登錄,并將認(rèn)證信息報(bào)錯(cuò)起來(lái)供后面使用。所以先用命令退出容器,再運(yùn)行命令命令中,指定了要提交的修改過(guò)的容器的目標(biāo)鏡像倉(cāng)庫(kù)鏡像名。提交的知識(shí)創(chuàng)建容器的鏡像與容器的當(dāng)前狀態(tài)之間的差異部分,很輕量。 假期快要結(jié)束了,干點(diǎn)正事,接著Docker的學(xué)習(xí)。 構(gòu)建鏡像 構(gòu)建鏡像的兩種方法: 使用docker commit 命令 使用docker build...
摘要:如果查到的不是版的內(nèi)核,可以用來(lái)升級(jí)然后更新啟動(dòng)加載器來(lái)加載新內(nèi)核完成安裝后,重啟宿主機(jī)來(lái)啟用新的內(nèi)核重啟之后,可以用確認(rèn)是否運(yùn)行了新版本內(nèi)核。如果是較低版本的系統(tǒng),需要先更新內(nèi)核。然后重復(fù)上面的步驟即可。 本人的學(xué)習(xí)筆記,主要是對(duì)《我的第一本Docker書》、《Docker —— 從入門到實(shí)踐》的學(xué)習(xí)記錄,并結(jié)合其他各種資源的學(xué)習(xí)。這次記錄了4種常見系統(tǒng)的Docker安裝方法,這些系...
摘要:運(yùn)行容器使用命令啟動(dòng)容器。指定鏡像時(shí),會(huì)檢查本地是否存在鏡像?,F(xiàn)在進(jìn)入到容器中,這是一個(gè)完整的系統(tǒng)。除此之外,并沒有其它的資源。本人的學(xué)習(xí)筆記,主要是對(duì)我的第一本書從入門到實(shí)踐的學(xué)習(xí)記錄,并結(jié)合其他各種資源的學(xué)習(xí)。 運(yùn)行容器 使用run命令啟動(dòng)容器。 下面的命令輸出一個(gè) Hello World,之后終止容器: $ sudo docker run ubuntu:14.04 /bin...
閱讀 2808·2021-10-09 09:44
閱讀 3578·2019-08-30 15:54
閱讀 2194·2019-08-30 14:16
閱讀 2817·2019-08-30 13:09
閱讀 852·2019-08-30 13:08
閱讀 1308·2019-08-29 16:29
閱讀 1710·2019-08-26 13:57
閱讀 1955·2019-08-26 13:53