国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

認(rèn)識(shí)docker

go4it / 2226人閱讀

摘要:是一項(xiàng)獨(dú)立的容器管理包,以及都是通過來實(shí)現(xiàn)具體對(duì)容器進(jìn)行的操作。安裝認(rèn)識(shí)鏡像和容器鏡像容器管理什么是鏡像鏡像是一個(gè)多層的聯(lián)合只讀的文件系統(tǒng)。

一、Docker工作原理

二、Docker容器和虛擬機(jī)對(duì)比

三、鏡像容器管理

1、Docker關(guān)鍵組件

2、Docker架構(gòu)

3、Docker內(nèi)部組件

鏡像(Image)——一個(gè)特殊的文件系統(tǒng)
Docker 鏡像是一個(gè)特殊的文件系統(tǒng),除了提供容器運(yùn)行時(shí)所需的程序、庫、資源、配置等文件外,還包含了一些為運(yùn)行時(shí)準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)

容器(Container)——鏡像運(yùn)行時(shí)的實(shí)體
容器是鏡像運(yùn)行時(shí)的實(shí)體。容器可以被創(chuàng)建、啟動(dòng)、停止、刪除、暫停等

倉庫(Repository)——集中存放鏡像文件的地方
鏡像構(gòu)建完成后,可以很容易的在當(dāng)前宿主上運(yùn)行,但是,?如果需要在其它服務(wù)器上使用這個(gè)鏡像,我們就需要一個(gè)集中的存儲(chǔ)、分發(fā)鏡像的服務(wù),Docker Registry就是這樣的服務(wù)

Docker采用了C/S架構(gòu)。客戶端和服務(wù)端可以運(yùn)行在一個(gè)機(jī)器上,也可以通過socket或者RESTful API 來進(jìn)行通信。
Docker ?Daemon: 一般在宿主機(jī)后臺(tái)運(yùn)行,等待接收客戶端的消息
Docker Client:則為客戶提供一系列可執(zhí)行的命令, 用戶使用這些命令跟docker daemon交互

Docker daemon:
Docker daemmon是Docker架構(gòu)中的主要用戶接口。首先,它提供了API Server用于接收來自Docker client的請(qǐng)求,其后根據(jù)不同的請(qǐng)求分發(fā)給Docker daemon的不同模塊執(zhí)行相應(yīng)的工作

Image managerment:
需要?jiǎng)?chuàng)建DOcker容器時(shí),可通過鏡像管理(image management)部分的distribution和registry模塊從Docker registry中下載鏡像,并通過鏡像管理的image、reference和layer存儲(chǔ)鏡像的元數(shù)據(jù),通過鏡像存儲(chǔ)驅(qū)動(dòng)graphdriver將鏡像文件存儲(chǔ)于具體的文件系統(tǒng)中

Network:
當(dāng)需要為Docker容器創(chuàng)建網(wǎng)絡(luò)環(huán)境時(shí),通過網(wǎng)絡(luò)模塊network調(diào)用libnetwork創(chuàng)建并配置Docker容器的網(wǎng)絡(luò)環(huán)境

Volume:
當(dāng)需要為容器創(chuàng)建數(shù)據(jù)卷volume時(shí),則通過volume模塊調(diào)用某個(gè)具體的volumedrive,來創(chuàng)建一個(gè)數(shù)據(jù)卷并負(fù)責(zé)后續(xù)的掛載操作

Execdriver:
當(dāng)需要限制Docker容器運(yùn)行資源或執(zhí)行用戶指令操作時(shí),則通過execdrive來完成

Libcontainer:
是對(duì)cgroups和namespace的二次封裝,execdrive是通過libcontainer來實(shí)現(xiàn)對(duì)容器的具體管理,包括利用UTS、IPC、PID、Network、Mount、User等namespace實(shí)現(xiàn)容器之間的資源隔離和利用cgroups實(shí)現(xiàn)對(duì)容器的資源限制.當(dāng)運(yùn)行容器的命令執(zhí)行完畢后,一個(gè)實(shí)際的容器就處于運(yùn)行狀態(tài),該容器具有獨(dú)立的文件系統(tǒng)、相對(duì)安全且相互隔離的運(yùn)行環(huán)境.

1、用戶是使用Docker Client與Docker Daemon建立通信,并發(fā)送請(qǐng)求給后者

2、Engine執(zhí)行Docker內(nèi)部的一系列工作,每一項(xiàng)工作都是以一個(gè)Job的形式的存在。

3、Job的運(yùn)行過程中,當(dāng)需要容器鏡像時(shí),則從Docker Registry中下載鏡像,并通過鏡像管理驅(qū)動(dòng)graphdriver將下載鏡像以Graph的形式存儲(chǔ);當(dāng)需要為Docker創(chuàng)建網(wǎng)絡(luò)環(huán)境時(shí),通過網(wǎng)絡(luò)管理驅(qū)動(dòng)networkdriver創(chuàng)建并配置Docker容器網(wǎng)絡(luò)環(huán)境;當(dāng)需要限制Docker容器運(yùn)行資源或執(zhí)行用戶指令等操作時(shí),則通過execdriver來完成。libcontainer是一項(xiàng)獨(dú)立的容器管理包,networkdriver以及execdriver都是通過libcontainer來實(shí)現(xiàn)具體對(duì)容器進(jìn)行的操作。

1、容器和虛擬機(jī)對(duì)比

2、Docker的優(yōu)勢(shì)

3、Docker的劣勢(shì)

4、Docker的應(yīng)用場(chǎng)景

Docker 的的優(yōu)勢(shì):

持續(xù)部署和測(cè)試
發(fā)到產(chǎn)品發(fā)布的整個(gè)過程中使用相同的容器來確保沒有任何差異或者人工干預(yù)。Docker可以保證測(cè)試環(huán)境、開發(fā)環(huán)境、生產(chǎn)環(huán)境的一致性。

可移植性
容器可以移動(dòng)到任意一臺(tái)Docker主機(jī)上,而不需要過多關(guān)注底層系統(tǒng)。

彈性伸縮更快速
配合K8S可以很容易的無狀態(tài)應(yīng)用的彈性伸縮,只需要改一個(gè)yml的數(shù)字即可。利用docker能在幾秒鐘之內(nèi)啟動(dòng)大量的容器,這是虛擬機(jī)無法辦到的,快速啟動(dòng),秒級(jí)和分鐘級(jí)的對(duì)比。

資源利用率高
由于docker不需要Hypervisor實(shí)現(xiàn)硬件資源虛擬化,docker容器和內(nèi)核交互,幾乎沒有性能損耗,性能優(yōu)于通過Hypervisor層與內(nèi)核層的虛擬化。一臺(tái)機(jī)器啟動(dòng)上前臺(tái)容器也沒問題。

對(duì)硬件無要求
不需要CPU支持虛擬化

Docker 的的劣勢(shì)

資源隔離
docker是利用cgroup實(shí)現(xiàn)資源隔離的,只能限制資源消耗的最大值,而不能隔絕其他應(yīng)用程序占用自己的資源; docker屬于進(jìn)程之間的隔離,虛擬機(jī)可實(shí)現(xiàn)系統(tǒng)級(jí)別隔離;

安全性問題
一個(gè)用戶擁有執(zhí)行docker的權(quán)限,可以刪除任何用戶創(chuàng)建的容器。

兼容性問題
docker目前還在版本快速更新中,細(xì)節(jié)功能調(diào)整較大,一些核心的模塊依賴于高版本的內(nèi)核,存在兼容性的問題。

1、Docker安裝

2、認(rèn)識(shí)鏡像和容器

3、鏡像容器管理

什么是鏡像?
鏡像是一個(gè)多層的聯(lián)合只讀的文件系統(tǒng)。

什么是容器?
容器是在鏡像基礎(chǔ)上加上讀寫層。容器即進(jìn)程。

構(gòu)建鏡像的過程?
鏡像->鏡像+可寫層+執(zhí)行命令->commit為新的鏡像(新的一層)->鏡像+可寫層+執(zhí)行命令->commit為新的鏡像(新的一層)->…

典型文件系統(tǒng)啟動(dòng) :
一個(gè)典型的 Linux 文件系統(tǒng)由 bootfs 和 rootfs 兩部分組成,

bootfs(boot file system)

主要包含 bootloader 和 kernel,bootloader 主要用于引導(dǎo)加載 kernel,當(dāng) kernel 被加載到內(nèi)存中后 bootfs 會(huì)被 umount 掉

rootfs (root file system)

包含的就是典型 Linux 系統(tǒng)中的/dev,/proc,/bin,/etc 等標(biāo)準(zhǔn)目錄和文件

加載過程:
bootfs 時(shí)會(huì)先將 rootfs 設(shè)為 read-only,然后在系統(tǒng)自檢之后將 rootfs 從 read-only 改為 read-write,

Docker文件系統(tǒng)啟動(dòng):

Docker 在 bootfs 自檢完畢之后并不會(huì)把 rootfs 的 read-only 改為 read-write,而是利用 union mount(UnionFS 的一種掛載機(jī)制)將 image 中的其他的 layer 加載到之前的 read-only 的 rootfs 層之上,每一層 layer 都是 rootfs 的結(jié)構(gòu),并且是read-only 的。所以,我們是無法修改一個(gè)已有鏡像里面的 layer 的!只有當(dāng)我們創(chuàng)建一個(gè)容器,也就是將 Docker 鏡像進(jìn)行實(shí)例化,系統(tǒng)會(huì)分配一層空的 read-write 的 rootfs ,用于保存我們做的修改

Dockerfile

FROM centos

ENV TZ "Asia/Shanghai"

ADD echo.sh /opt/echo.sh

RUN chmod +x /opt/echo.sh

CMD ["/opt/echo.sh"]

docker build -t test -f Dockerfile .

鏡像工作原理:
如果運(yùn)行中的容器修改一個(gè)已經(jīng)存在的文件,那么會(huì)將該文件從下面的只讀層復(fù)制到讀寫層,只讀層的這個(gè)文件就會(huì)覆蓋(隱藏),但還存在。
如果刪除一個(gè)文件,在最上層會(huì)被標(biāo)記隱藏,實(shí)際只讀層的文件還存在。
這就實(shí)現(xiàn)了文件系統(tǒng)隔離,當(dāng)刪除容器后,讀寫層的數(shù)據(jù)將會(huì)刪除,只讀鏡像不變。

查看具體的掛載邏輯

[root@centos7 l]# mount|grep overlay

overlay on

/var/lib/docker/overlay2/56375ce93fd54484061ef08a48a7093905be680dd14754642970616127b30fca/merged type overlay (rw,relatime,seclabel,lowerdir=/var/lib/docker/overlay2/l/A6JYT4QIFZMKOPIGY675JWKS7F:/var/lib/docker/overlay2/l/4L4SUINS3DX6XPD5BL2J54JQDT,upperdir=/var/lib/docker/overlay2/56375ce93fd54484061ef08a48a7093905be680dd14754642970616127b30fca/diff,workdir=/var/lib/docker/overlay2/56375ce93fd54484061ef08a48a7093905be680dd14754642970616127b30fca/work)

Overlay和overlay2的區(qū)別

overlay: 只掛載一層,其他層通過最高層通過硬連接形式共享(增加了磁盤inode的負(fù)擔(dān))

overlay2: 逐層掛載(最多128層)

基礎(chǔ)鏡像的層信息

docker pull centos

tree -L 2 /var/lib/docker/overlay2/

構(gòu)建后鏡像的層信息

cd layer_dockerfile/

docker build -t centos:test -f ./Dockerfile .

tree -L 2 /var/lib/docker/overlay2/

每一層都包含了”該層獨(dú)有的文件”以及”和其低層共享的數(shù)據(jù)的連接”,在Docker 1.10之前的版本中,目錄的名字和鏡像的UUID相同,而Docker 1.10后則采用了新的存儲(chǔ)方式,可以看到目錄名和下載鏡像的UUID并不相同

Diff
存放掛載點(diǎn)的具體的文件內(nèi)容

Link
對(duì)應(yīng)l目錄的鏈接源的名稱

Lower
根沒有l(wèi)ower,其它的lower指向的父層的鏈接

L:
”l“目錄包含一些符號(hào)鏈接作為縮短的層標(biāo)識(shí)符. 這些縮短的標(biāo)識(shí)符用來避免掛載時(shí)超出頁面大小的限制

docker run -idt --name centos_con centos:test /bin/bash

tree -L 2 /var/lib/docker/overlay2/

多出的兩層“……”為讀寫層,“…..-init”為初始層。

初始層:

初始層中大多是初始化容器環(huán)境時(shí),與容器相關(guān)的環(huán)境信息,如容器主機(jī)名,主機(jī)host信息以及域名服務(wù)文件等。

讀寫層:

所有對(duì)容器做出的改變都記錄在讀寫層

Diff
存放掛載點(diǎn)的具體的文件內(nèi)容

Link
對(duì)應(yīng)l目錄的鏈接源的名稱

Lower
根沒有l(wèi)ower,其它的lower指向的父層的鏈接

Merged
如果是讀寫層會(huì)有一個(gè)Merged

Commit:容器提交為鏡像

docker run -idt --name test centos

Touch liwei

docker commit 6de test2

Create:創(chuàng)建容器但是不啟動(dòng)

docker create --name nginx-con -p80:80 nginx:latest

Start:啟動(dòng)容器

docker start nginx-con

Stop:停止容器

docker stop nginx-con

Kill:殺掉容器,和停止相比不友好

docker kill nginx-con

Pause:暫停容器

docker pause nginx-con

Unpause:恢復(fù)暫停的容器

docker unpause nginx-con

Run:創(chuàng)建且啟動(dòng)容器

docker run -idt --restart=always --name nginx_con -v /tmp/:/mnt -p 88:80 -e arg1=arg1 nginx
Docker attach nginx_con
Ctrl+^p+^q

CP:宿主機(jī)和容器之間copy文件

docker cp docker_install.sh nginx_con:/opt

docker exec nginx_con ls /opt

docker cp nginx_con:/opt/docker_install.sh ./1.sh

Exec:執(zhí)行命令,也可附加到容器

docker exec nginx_con ls /opt

Attach:附加到容器

docker attach nginx_con

docker exec -it nginx_con /bin/bash

Logs:查看容器日志

docker logs –f nginx_con

Inspect:查看元數(shù)據(jù),可以查看鏡像和容器

docker inspect nginx_con

Port:查看容器端口映射

docker port nginx_con

Top:查看容器中正在運(yùn)行的進(jìn)程

docker top nginx_con

Ps:查看容器

docker ps

docker ps -a

docker ps -aq

查看正在運(yùn)行的容器,加上-a查看所有容器(包含停止和暫停狀態(tài)的容器)

Rm:刪除容器

docker rm nginx_con 刪除容器

docker rm -f nginx_con 強(qiáng)行刪除容器

Export:導(dǎo)出容器

docker pull busybox

docker run -itd busybox

docker export 983989307eef>busybox.tar

Import:導(dǎo)入容器

docker import busybox.tar busybox:1.3

Save:導(dǎo)出鏡像

docker save busybox:1.3>busybox1.3.tar

Load:導(dǎo)入鏡像

docker load -i busybox1.3.tar

Tag:鏡像打標(biāo)簽

docker tag busybox:1.3 192.168.199.160/test/busybox:latest

Build:從dockerfile構(gòu)建鏡像

FROM centos

ENV TZ "Asia/Shanghai"

ADD echo.sh /opt/echo.sh

RUN chmod +x /opt/echo.sh

CMD ["/opt/echo.sh"]

docker build -t centos:test -f Dockerfile .

Pull:從 registry拉取鏡像

docker pull nginx 從dockerhub上拉取

docker pull 192.168.199.160/test/nginx:latest 從內(nèi)網(wǎng)harbor上拉取

Push:推送鏡像到倉庫[第一次需要輸入密碼,后續(xù)不需要了]

docker login 192.168.199.160

admin

Harbor12345

docker push 192.168.199.160/test/busybox:latest

Info、version、events

docker info 查看docker相關(guān)信息信息

Docker version 查看docker相關(guān)版本信息

Docker events 查看docker事件

【注】
1、創(chuàng)建容器后防火墻不要再動(dòng)

2、cmd會(huì)被覆蓋的問題,需要注意,可能會(huì)導(dǎo)致/bin/bash 把啟動(dòng)命令覆蓋了,啟動(dòng)不了的問題例如
docker run -idt --restart=always --name nginx_con -v /tmp/:/mnt -p 88:80 -e arg1=arg1 nginx /bin/bash

3、cmd的命令都會(huì)在掛在后執(zhí)行。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/28089.html

相關(guān)文章

  • 一文帶你重新認(rèn)識(shí) Docker 與 Kubernetes

    摘要:公司始于名為的平臺(tái)即服務(wù)供應(yīng)商。跨多個(gè)機(jī)器之間協(xié)調(diào)這些容器需要額外的工具,這稱之為容器編排。的核心優(yōu)勢(shì)是為應(yīng)用程序開發(fā)人員提供了用于編排無狀態(tài)容器的強(qiáng)大工具。有無數(shù)的文章都在討論和比較Docker、Kubernetes 以及Mesos。如果你是初學(xué)者,那么你可能會(huì)認(rèn)為這三個(gè)開源項(xiàng)目正為了稱霸容器界而殊死搏斗。雖然這三種技術(shù)都使得使用容器部署、管理和伸縮應(yīng)用成為可能,但實(shí)際上它們各自解決了不同...

    baishancloud 評(píng)論0 收藏0
  • Docker學(xué)習(xí)與和應(yīng)用(一)_初步認(rèn)識(shí)

    摘要:分別進(jìn)行配置和測(cè)試。也就是說對(duì)于開發(fā)和部署來說,使用可以更快速的交付和部署應(yīng)用環(huán)境。更便捷的應(yīng)用更新管理。使用鏡像創(chuàng)建并啟動(dòng)一個(gè)容器。執(zhí)行用戶指定的應(yīng)用程序。執(zhí)行完畢后,容器被終止。 Docker是為應(yīng)用的開發(fā)和部署提供的一站式容器解決方案,它能幫助開發(fā)者高效快速的構(gòu)建應(yīng)用,實(shí)現(xiàn)Build,Ship and Run Any App, Anywhere,從而達(dá)到一次構(gòu)建,到處運(yùn)行的目的。...

    kgbook 評(píng)論0 收藏0
  • Dockerfile 與 Compose 環(huán)境搭建學(xué)習(xí)筆記(一)

    摘要:的主要作用是自己根據(jù)基礎(chǔ)鏡像,重新定制鏡像,而不是直接從官方倉庫拿現(xiàn)成的使用。以接下來要構(gòu)建的環(huán)境來說明下,下面我將要搭建一個(gè)的開發(fā)環(huán)境,需要進(jìn)行配合。它的主要作用是持久化數(shù)據(jù),避免容器銷毀后內(nèi)部數(shù)據(jù)丟失暴露到宿主機(jī)的端口。 以前一直使用 Vagrant 作為自己的開發(fā)環(huán)境,并且在上家公司也推行大家采用 Vagrant 作為開發(fā)環(huán)境,保障公司使用的是同一套開發(fā)環(huán)境。隨著docker的流...

    TZLLOG 評(píng)論0 收藏0
  • Dockerfile 與 Compose 環(huán)境搭建學(xué)習(xí)筆記(一)

    摘要:的主要作用是自己根據(jù)基礎(chǔ)鏡像,重新定制鏡像,而不是直接從官方倉庫拿現(xiàn)成的使用。以接下來要構(gòu)建的環(huán)境來說明下,下面我將要搭建一個(gè)的開發(fā)環(huán)境,需要進(jìn)行配合。它的主要作用是持久化數(shù)據(jù),避免容器銷毀后內(nèi)部數(shù)據(jù)丟失暴露到宿主機(jī)的端口。 以前一直使用 Vagrant 作為自己的開發(fā)環(huán)境,并且在上家公司也推行大家采用 Vagrant 作為開發(fā)環(huán)境,保障公司使用的是同一套開發(fā)環(huán)境。隨著docker的流...

    ityouknow 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<