真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Docker概述篇

我想以這篇文章作為Docker的開篇,以下內(nèi)容均來(lái)自Docker官方文檔,應(yīng)該沒(méi)有比官方文檔更能形象生動(dòng)的描述Docker了。

成都創(chuàng)新互聯(lián)堅(jiān)信:善待客戶,將會(huì)成為終身客戶。我們能堅(jiān)持多年,是因?yàn)槲覀円恢笨芍档眯刨?。我們從不忽悠初訪客戶,我們用心做好本職工作,不忘初心,方得始終。十載網(wǎng)站建設(shè)經(jīng)驗(yàn)成都創(chuàng)新互聯(lián)是成都老牌網(wǎng)站營(yíng)銷服務(wù)商,為您提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)、H5響應(yīng)式網(wǎng)站、網(wǎng)站制作、成都品牌網(wǎng)站建設(shè)、微信小程序服務(wù),給眾多知名企業(yè)提供過(guò)好品質(zhì)的建站服務(wù)。

Docker 概述

Docker是一個(gè)開發(fā)、發(fā)布和運(yùn)行應(yīng)用程序的開放平臺(tái)。Docker使您能夠?qū)?yīng)用程序與基礎(chǔ)架構(gòu)分離,以便快速交付軟件。有了Docker,你可以像管理應(yīng)用程序一樣管理你的基礎(chǔ)設(shè)施。通過(guò)利用Docker快速發(fā)布、測(cè)試和部署代碼的方法,您可以顯著減少編寫代碼和在生產(chǎn)環(huán)境中運(yùn)行代碼之間的延遲。

Docker平臺(tái)

Docker提供了在容器中打包和運(yùn)行應(yīng)用程序的能力。隔離和安全性允許您在給定的主機(jī)上同時(shí)運(yùn)行多個(gè)容器。容器是輕量級(jí)的,因?yàn)樗鼈儾恍枰虞d額外的hypervisor,而是直接在宿主機(jī)的內(nèi)核中運(yùn)行。這意味著您可以在給定的硬件組合上運(yùn)行比使用虛擬機(jī)時(shí)更多的容器。你甚至可以在實(shí)際是虛擬機(jī)的主機(jī)中運(yùn)行Docker容器!

Docker提供了工具和平臺(tái)來(lái)管理容器的生命周期:

1、使用容器開發(fā)應(yīng)用程序及其支持組件。

2、容器成為分發(fā)和測(cè)試應(yīng)用程序的單元。

3、準(zhǔn)備好后,將應(yīng)用程序作為容器或編排的服務(wù)部署到生產(chǎn)環(huán)境中。無(wú)論您的生產(chǎn)環(huán)境是本地?cái)?shù)據(jù)中心、云提供商還是兩者的混合體,這都是一樣的。

Docker 引擎

Docker Engine是一個(gè)客戶端-服務(wù)器應(yīng)用程序,具有以下主要組件:

1、一種被稱為守護(hù)進(jìn)程(dockerd)的長(zhǎng)時(shí)間運(yùn)行程序的服務(wù)器。

2、REST API,它指定了接口來(lái)告訴應(yīng)用程序如何與守護(hù)進(jìn)程進(jìn)行交互。

命令行界面(CLI)客戶端(docker命令),如下圖1.1所示。

Docker概述篇

圖1.1

CLI使用Docker REST API通過(guò)腳本或直接CLI命令來(lái)控制Docker守護(hù)進(jìn)程或與之交互。許多其他Docker應(yīng)用程序使用底層API和CLI。

使用守護(hù)進(jìn)程來(lái)創(chuàng)建并管理Docker對(duì)象,如鏡像、容器、網(wǎng)絡(luò)和卷。

注意:Docker是基于Apache2.0開源許可授權(quán)。

更多細(xì)節(jié)見下面的Docker架構(gòu)。

我可以用Docker做什么?

快速、一致地交付您的應(yīng)用程序。

Docker通過(guò)允許開發(fā)人員在標(biāo)準(zhǔn)化環(huán)境中使用本地容器(提供應(yīng)用程序和服務(wù))來(lái)簡(jiǎn)化開發(fā)周期。容器非常適合做持續(xù)集成和持續(xù)交付(CI/CD)工作流。

考慮以下示例場(chǎng)景:

開發(fā)人員在本地編寫代碼,并使用Docker容器與同事共享他們的工作。

他們使用Docker將應(yīng)用程序推入測(cè)試環(huán)境,并執(zhí)行自動(dòng)化和手動(dòng)測(cè)試。

當(dāng)開發(fā)人員發(fā)現(xiàn)bug時(shí),他們可以在開發(fā)環(huán)境中修復(fù)它們,并將它們重新部署到測(cè)試環(huán)境中進(jìn)行測(cè)試和驗(yàn)證。

測(cè)試完成后,將更新后的鏡像推送到生產(chǎn)環(huán)境中就可以簡(jiǎn)單地為客戶獲得修復(fù)。

響應(yīng)式部署和擴(kuò)容

基于Docker容器化平臺(tái)允許高度可移植的工作負(fù)載。Docker容器可以運(yùn)行在開發(fā)人員的本地筆記本電腦、數(shù)據(jù)中心的物理機(jī)或虛擬機(jī)、云提供商又或者是混合環(huán)境中。

Docker的可移植性和輕量級(jí)特性也使得動(dòng)態(tài)管理工作負(fù)載、根據(jù)業(yè)務(wù)需求擴(kuò)容或收縮應(yīng)用程序和服務(wù)變得非常容易,幾乎是實(shí)時(shí)的。

在同一硬件上運(yùn)行更多工作負(fù)載

Docker是輕量并快速的。它為基于hypervisor的虛擬機(jī)提供了一個(gè)可行、經(jīng)濟(jì)的替代方案,因此您可以使用更多的計(jì)算能力來(lái)實(shí)現(xiàn)業(yè)務(wù)目標(biāo)。Docker非常適合高密度環(huán)境和中小型部署,在這些環(huán)境中,您需要用更少的資源做更多的事情。

Docker架構(gòu)

Docker使用C-S架構(gòu)。Docker客戶端與Docker守護(hù)進(jìn)程通信,Docker守護(hù)進(jìn)程負(fù)責(zé)構(gòu)建、運(yùn)行和分發(fā)Docker容器。Docker客戶端和守護(hù)進(jìn)程可以在同一個(gè)系統(tǒng)上運(yùn)行,也可以將Docker客戶端連接到遠(yuǎn)程Docker守護(hù)進(jìn)程。Docker客戶端和守護(hù)進(jìn)程使用REST API,通過(guò)UNIX Socket(套接字)或網(wǎng)絡(luò)接口進(jìn)行通信,如圖1.2所示。

Docker概述篇

圖1.2

Docker守護(hù)進(jìn)程

Docker守護(hù)進(jìn)程(dockerd)監(jiān)聽Docker API的請(qǐng)求并管理Docker對(duì)象,如鏡像(images)、容器(containers)、網(wǎng)絡(luò)(networks)和卷(volumes)。守護(hù)進(jìn)程還可以與其他守護(hù)進(jìn)程通信以管理Docker服務(wù)。

Docker客戶端

Docker客戶端(docker)是許多Docker用戶與Docker進(jìn)行交互的主要方式。當(dāng)您使用docker run等命令時(shí),客戶端會(huì)將這些命令發(fā)送給dockerd,dockerd會(huì)執(zhí)行這些命令。docker命令使用docker API。Docker客戶端可以與多個(gè)docker守護(hù)進(jìn)程通信。

Docker registry

Docker registry用來(lái)存儲(chǔ)Docker鏡像。Docker Hub是任何人都可以使用的公共registry,Docker默認(rèn)配置為在Docker Hub上查找鏡像。您可以運(yùn)行自己的私有registry。如果您使用Docker數(shù)據(jù)中心(DDC),它包括Docker Trusted Registry(DTR)。

使用docker pull或docker run命令時(shí),將從配置的registry中提取所需的鏡像。使用docker push命令時(shí),鏡像將被推送到配置的registry中。

Docker對(duì)象

當(dāng)您使用Docker時(shí),您可能正在創(chuàng)建和使用鏡像、容器、網(wǎng)絡(luò)、卷、插件和其他對(duì)象。

鏡像(image)

鏡像是一個(gè)只讀模板,包含了創(chuàng)建Docker容器的指導(dǎo)說(shuō)明。通常,一個(gè)鏡像基于另一個(gè)鏡像,并帶有一些額外的自定義項(xiàng)。例如,您可以構(gòu)建一個(gè)鏡像,它是基于ubuntu鏡像,然后再安裝Apache web服務(wù)器和您的應(yīng)用程序,并做相關(guān)詳細(xì)配置確保應(yīng)用能運(yùn)行。

您也可以創(chuàng)建自己的鏡像,也可以只使用其他人創(chuàng)建并在docker hub registry中發(fā)布的鏡像。要構(gòu)建自己的鏡像,需要?jiǎng)?chuàng)建一個(gè)Dockerfile,其中包含一些簡(jiǎn)單的語(yǔ)法,用于定義創(chuàng)建鏡像并運(yùn)行它所需的步驟。Dockerfile中的每條指令都會(huì)在鏡像中創(chuàng)建一個(gè)層。更改Dockerfile并重新生成鏡像時(shí),僅重新生成已更改的層。與其他虛擬化技術(shù)相比,這是使鏡像如此輕量級(jí)、小型和快速的原因之一。

容器(container)

容器是鏡像的可運(yùn)行實(shí)例。您可以使用Docker API或CLI創(chuàng)建、啟動(dòng)、停止、移動(dòng)或刪除容器。您可以將容器連接到一個(gè)或多個(gè)網(wǎng)絡(luò),將存儲(chǔ)附加到該容器,甚至可以基于其當(dāng)前狀態(tài)創(chuàng)建新鏡像。

默認(rèn)情況下,容器與其他容器及其主機(jī)隔離得相對(duì)較好。您可以控制容器的網(wǎng)絡(luò)、存儲(chǔ)或其他底層子系統(tǒng)與其他容器或主機(jī)的隔離程度。

容器由其鏡像以及創(chuàng)建或啟動(dòng)時(shí)提供給它的任何配置選項(xiàng)定義。當(dāng)容器被刪除時(shí),對(duì)其狀態(tài)的任何未存儲(chǔ)在持久性存儲(chǔ)中的更改都將丟失,即創(chuàng)建容器時(shí)我們要先規(guī)劃好確保有用數(shù)據(jù)是放在持久化的存儲(chǔ)上。

docker run命令示例

下面的命令將運(yùn)行一個(gè)ubuntu容器,以交互方式連接到本地命令行會(huì)話,并運(yùn)行/bin/bash。

運(yùn)行此命令時(shí),將發(fā)生以下情況(假設(shè)使用的是默認(rèn)registry配置):

# docker run -i -t ubuntu /bin/bash

1、如果你本地沒(méi)有ubuntu鏡像,Docker會(huì)從你配置的registry中去找,就像手動(dòng)運(yùn)行Docker pull ubuntu一樣。

2、Docker創(chuàng)建了一個(gè)新的容器,就像您手動(dòng)運(yùn)行了Docker container create命令一樣。

3、Docker為容器分配了一個(gè)可讀寫的文件系統(tǒng),作為容器的最后一層。允許在正在運(yùn)行的容器上創(chuàng)建或修改文件和目錄。

4、Docker會(huì)創(chuàng)建一個(gè)網(wǎng)絡(luò)接口,如果您沒(méi)有指定任何網(wǎng)絡(luò)選項(xiàng),容器將連接到默認(rèn)網(wǎng)絡(luò)。這包括為容器分配IP地址。默認(rèn)情況下,容器可以使用主機(jī)的網(wǎng)絡(luò)連接連接到外部網(wǎng)絡(luò)。

5、Docker啟動(dòng)容器并執(zhí)行/bin/bash。容器將以交互方式運(yùn)行并連接到您的終端。

6、當(dāng)您鍵入exit,將終止/bin/bash,容器會(huì)停止,但不會(huì)被刪除。您可以重新啟動(dòng)或刪除它。

服務(wù)

服務(wù)允許您跨多個(gè)Docker守護(hù)進(jìn)程擴(kuò)展容器,所有這些守護(hù)進(jìn)程都與多個(gè)管理進(jìn)程和工作進(jìn)程協(xié)同工作。swarm的每個(gè)成員都是Docker守護(hù)進(jìn)程,所有守護(hù)進(jìn)程都使用Docker API進(jìn)行通信。服務(wù)允許您定義所需的狀態(tài),例如在任何給定時(shí)間必須可用的服務(wù)副本的數(shù)量。默認(rèn)情況下,服務(wù)在所有工作節(jié)點(diǎn)上都是負(fù)載平衡的。對(duì)于消費(fèi)者來(lái)說(shuō),Docker服務(wù)似乎是一個(gè)單獨(dú)的應(yīng)用程序。Docker引擎要支持swarm模式,需要Docker1.12及更高版本。

基礎(chǔ)技術(shù)

Docker采用Go語(yǔ)言編寫,并且利用了Linux內(nèi)核的一些高級(jí)特性來(lái)提供功能。

命名空間(Namespaces)

Docker使用命名空間(namespaces)技術(shù)來(lái)給容器提供獨(dú)立的工作空間。當(dāng)您運(yùn)行一個(gè)容器時(shí),Docker會(huì)為該容器創(chuàng)建一組命名空間。

這些命名空間提供了一個(gè)隔離層,容器的各個(gè)資源都分別在一個(gè)單獨(dú)的命名空間中運(yùn)行,其訪問(wèn)權(quán)限僅限于該命名空間。

Docker Engine在Linux上使用如下名稱空間:

pid 命名空間:進(jìn)程隔離(pid:Process ID)。

net 命名空間:管理網(wǎng)絡(luò)接口(net:Networking)。

ipc 命名空間:管理對(duì)ipc資源的訪問(wèn)(ipc:InterProcess Communication)。

mnt 命名空間:管理文件系統(tǒng)掛載點(diǎn)(mnt:mount)。

uts 命名空間:隔離內(nèi)核和版本標(biāo)識(shí)符。(UTS: Unix Timesharing System)。

控制組(Control groups)

運(yùn)行在Linux上的Docker引擎還依賴于另一種稱為控制組(cgroups)的技術(shù)。cgroup將應(yīng)用程序限制在特定的資源集中。cgroup允許Docker引擎將可用的硬件資源共享給容器,并可選地實(shí)施限制和約束。例如,可以限制指定容器的可用內(nèi)存。

聯(lián)合文件系統(tǒng)(Union file systems)

聯(lián)合文件系統(tǒng)(UnionFS)是通過(guò)創(chuàng)建層來(lái)操作的文件系統(tǒng),這使得它們非常輕量和快速。Docker引擎使用UnionFS為容器提供構(gòu)建塊。Docker引擎可以使用多個(gè)UnionFS變體,包括AUFS、btrfs、vfs和DeviceMapper。

容器格式(Container format)

Docker引擎將命名空間、控制組和UnionFS組合成一個(gè)稱為容器格式的封裝套件。默認(rèn)的容器格式是libcontainer。未來(lái),Docker可能會(huì)通過(guò)與BSD Jails或Solaris Zones等技術(shù)集成來(lái)支持其他容器格式。


網(wǎng)站題目:Docker概述篇
文章起源:http://weahome.cn/article/jjejig.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部