摘要:一個(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)文件系統(tǒng)有交互。實(shí)際上,當(dāng)一個(gè)容器啟動(dòng)后,他將會(huì)被移到內(nèi)存中,而引導(dǎo)文件系統(tǒng)則會(huì)被卸載(unmount),以流出更多的內(nèi)存供initrd磁盤(pán)鏡像使用。
目前,Docker看起來(lái)還很像一個(gè)典型的Linux虛擬化棧。實(shí)際上,Docker鏡像的第二層是root文件系統(tǒng)rootfs,它位于引導(dǎo)文件系統(tǒng)之上,rootfs可以是一種或多種操作系統(tǒng)(如Debian、Ubuntu)。
在傳統(tǒng)的linux引導(dǎo)過(guò)程中,root文件系統(tǒng)會(huì)最先以只讀的方式家長(zhǎng),當(dāng)引導(dǎo)結(jié)束并完成完整性檢查之后,他才會(huì)被切換成讀寫(xiě)模式。但是Docker里,root文件系統(tǒng)永遠(yuǎn)只是只讀狀態(tài),并且Docker利用聯(lián)合加載(union mount)技術(shù)又會(huì)在root文件系統(tǒng)層上加載更多的只讀文件系統(tǒng)。聯(lián)合加載指的是一次同時(shí)加載多個(gè)文件系統(tǒng),但是在外面看起來(lái)只能看到一個(gè)文件系統(tǒng)。聯(lián)合加載會(huì)將各層文件系統(tǒng)疊加到一起,這樣最終的文件系統(tǒng)會(huì)包含所有底層的文件和目錄。
Docker將這樣的文件系統(tǒng)成為鏡像。一個(gè)鏡像可以放到另一個(gè)京廣線的頂部,位于下面的鏡像稱為父鏡像(parent image),最底部的稱為基礎(chǔ)鏡像(base image)。
簡(jiǎn)單來(lái)說(shuō),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è)命令
打開(kāi)一個(gè)端口
當(dāng)從以鏡像期待容器時(shí),Docker會(huì)在該鏡像的最頂層加載一個(gè)讀寫(xiě)文件系統(tǒng)。想在Docker中運(yùn)行的程序就是在這個(gè)讀寫(xiě)層中執(zhí)行的。
列出鏡像docker images命令:
$ sudo docker images
在列出信息中,可以看到幾個(gè)字段信息:
來(lái)自于哪個(gè)倉(cāng)庫(kù),比如 ubuntu
鏡像的標(biāo)記,比如 14.04
它的 ID 號(hào)(唯一)
創(chuàng)建時(shí)間
鏡像大小
其中鏡像的 ID 唯一標(biāo)識(shí)了鏡像,注意到 ubuntu:14.04 和 ubuntu:trusty 具有相同的鏡像 ID,說(shuō)明它們實(shí)際上是同一鏡像。
TAG 信息用來(lái)標(biāo)記來(lái)自同一個(gè)倉(cāng)庫(kù)的不同鏡像。例如 ubuntu 倉(cāng)庫(kù)中有多個(gè)鏡像,通過(guò) TAG 信息來(lái)區(qū)分發(fā)行版本,例如12.04、12.10、13.04、14.04 等。
下面的命令指定使用鏡像 ubuntu:14.04 來(lái)啟動(dòng)一個(gè)容器。
$ sudo docker run -t -i ubuntu:14.04 /bin/bash
如果不指定具體的標(biāo)記,則默認(rèn)使用 latest 標(biāo)記信息。
本地鏡像都保存在Docker宿主機(jī)的/var/lib/docker目錄下。每個(gè)鏡像都保存在Docker所采用的存儲(chǔ)驅(qū)動(dòng)目錄下。也可以在/var/lib/docker/containers目錄下面看到所有的容器。
拉取鏡像使用docker run命令啟動(dòng)一個(gè)鏡像時(shí),Docker會(huì)檢查本地是否存在該鏡像。如果本地沒(méi)有該鏡像的話,就好鏈接官方維護(hù)的Docker Hub Registy,查看Docker Hub中是否有該鏡像,有的話就下載下來(lái)。如果沒(méi)有指定具體的鏡像標(biāo)簽,則會(huì)下載latest標(biāo)簽的鏡像。例如:
$ sudo docker run -i -t ubuntu /bin/bash
也可以通過(guò)pull命令預(yù)先拉取鏡像到本地,可以節(jié)省從一個(gè)新鏡像啟動(dòng)一個(gè)容器的世界。
拉取一個(gè)Fedora基礎(chǔ)鏡像的例子:
$ sudo docker pull fedora查找鏡像
docker search命令查找所有Docker Hub上公共的可用鏡像:
$ sudo docker search puppet
返回了以下信息:
倉(cāng)庫(kù)名
鏡像描述
用戶評(píng)價(jià)(Stars)——反映鏡像的受歡迎程度
是否官方(official)
自動(dòng)構(gòu)建(Automated)——表示這個(gè)鏡像時(shí)由Docker Hub的自動(dòng)構(gòu)建流程(Automated Build)創(chuàng)建的。
也可以到Docker Hub網(wǎng)站上在線查找可用鏡像。
【本人的學(xué)習(xí)筆記,主要是對(duì)《我的第一本Docker書(shū)》、《Docker —— 從入門(mén)到實(shí)踐》的學(xué)習(xí)記錄,引用了很多書(shū)上的話和例子,并結(jié)合其他各種資源的學(xué)習(xí)。我使用的是windows 7, docker 1.3.2。】
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/26358.html
摘要:運(yùn)行容器使用命令啟動(dòng)容器。指定鏡像時(shí),會(huì)檢查本地是否存在鏡像?,F(xiàn)在進(jìn)入到容器中,這是一個(gè)完整的系統(tǒng)。除此之外,并沒(méi)有其它的資源。本人的學(xué)習(xí)筆記,主要是對(duì)我的第一本書(shū)從入門(mén)到實(shí)踐的學(xué)習(xí)記錄,并結(jié)合其他各種資源的學(xué)習(xí)。 運(yùn)行容器 使用run命令啟動(dòng)容器。 下面的命令輸出一個(gè) Hello World,之后終止容器: $ sudo docker run ubuntu:14.04 /bin...
摘要:本人的學(xué)習(xí)筆記,主要是對(duì)我的第一本書(shū)從入門(mén)到實(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書(shū)》、《Docker —— 從入門(mén)到實(shí)踐》的學(xué)習(xí)記錄,并結(jié)合其他各種資源的學(xué)習(xí),歡迎大牛們指點(diǎn)。 容器簡(jiǎn)介 ...
摘要:郵件激活后,可以測(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...
摘要:若要開(kāi)啟刪除鏡像功能,需要修改鏡像倉(cāng)庫(kù)的配置文件。一個(gè)可行的解決辦法是手動(dòng)更改鏡像倉(cāng)庫(kù)的配置,暫時(shí)禁止鏡像的操作。 用友云開(kāi)發(fā)者中心是基于Docker容器進(jìn)行微服務(wù)架構(gòu)應(yīng)用的落地與管理。相信各位同學(xué)在使用的過(guò)程中,會(huì)發(fā)現(xiàn)隨著Docker鏡像的增多,占用磁盤(pán)空間也約來(lái)越多。這時(shí)我們需要清理私有鏡像倉(cāng)庫(kù)中不需要的鏡像。但在實(shí)際操作時(shí),才會(huì)發(fā)現(xiàn)這本以為很簡(jiǎn)單的任務(wù)中卻暗藏玄機(jī),遇到了不少的麻...
摘要:核心概念鏡像鏡像類似于虛擬機(jī)鏡像。每個(gè)鏡像包括了一個(gè)基本的操作系統(tǒng)環(huán)境容器容器類似于一個(gè)輕量級(jí)的沙箱,利用容器來(lái)運(yùn)行和隔離應(yīng)用。 這些是我的筆記,都是記錄的核心概念和使用方法 showImg(https://segmentfault.com/img/bVbcOnO?w=1354&h=894); 概述 使用docker搭建開(kāi)發(fā)環(huán)境將近1年了,自我感覺(jué)docker的強(qiáng)大并非如此,不過(guò)沒(méi)有機(jī)...
閱讀 2895·2021-10-13 09:48
閱讀 3935·2021-10-13 09:39
閱讀 3686·2021-09-22 16:04
閱讀 1923·2021-09-03 10:48
閱讀 914·2021-08-03 14:04
閱讀 2417·2019-08-29 15:18
閱讀 3478·2019-08-26 12:19
閱讀 2933·2019-08-26 12:08