久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

docker中容器架構、鏡像分層特性、dockerfile緩特性的示例分析

154次閱讀
沒有評論

共計 4119 個字符,預計需要花費 11 分鐘才能閱讀完成。

行業(yè)資訊    
服務器    
云計算    
docker 中容器架構、鏡像分層特性、dockerfile 緩特性的示例分析

丸趣 TV 小編給大家分享一下 docker 中容器架構、鏡像分層特性、dockerfile 緩特性的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Docker 網站:
https://hub.docker.com/ 
Docker 鏡像分層的概念:
Docker 的最小鏡像
docker 中容器架構、鏡像分層特性、dockerfile 緩特性的示例分析
下載鏡像(dockerfile 的組成)
docker pull hello-world
docker 中容器架構、鏡像分層特性、dockerfile 緩特性的示例分析

Dockerfile 的組成
1.》FROM:scratch   抓,撓(從零開始構建)
2》COPY:hello /
3》CMD:[“/hello”]

Base 鏡像
(基礎鏡像)
docker 中容器架構、鏡像分層特性、dockerfile 緩特性的示例分析
docker 中容器架構、鏡像分層特性、dockerfile 緩特性的示例分析

 *** 個人理解:  用戶空間:rootfs
   內核空間  :bootfs
  kernel 內核
   總體有七個部分: docker client,docker daemon,driver,libcontainer,
  docker container,graph,docker registry
  
  docker 是一個 C / S 的架構,用戶可以在客戶端輸入各種指令,客戶端負責接受請求并作出相應的響應返回給客戶。 DockerClient
  DockerClient  負責接受并傳遞請求指令  。 DockerDaemon
   后臺運行(不占用程序與端口) DockerDaemon 的功能主要有兩個:(是一個守護進程) 1. 負責接受 client 的請求 2. 管理 docker 容器
  dockerdaemon 的架構主要可以分為兩部分:dockerserver 和 engine
  DockerServer 作為服務端最主要的作用就是配合 client 端將請求指令接受過來,如圖所示,DockerServer 主要分為三個部分:Http.server,routermux.server,Handler
  DockerServer 運行時會從一個名為 mux 的包中創(chuàng)建一個 mux.Router 路由器,然后為路由器中添加相關的路由項用于路由信息,  每個路由項由 HTTP 請求方法(get,post,put,delete)+URL+Handler 三部分組成。 DockerServer 每收到一個請求就會生成一個 goroutine 然后進行相應的解析、匹配相應的路由項最后會找到相匹配的 Handler 來處理,Handler 處理玩請求之后給 DockerClient 返回響應
  2.Engine
  Engine 是 docker 中的運行引擎,存儲著大量的容器信息并管理著大部分 job 的執(zhí)行。 
  job 是 docker 中的最小執(zhí)行單元,類似于 unix 中的進程,也會有相應的名字、參數(shù)、環(huán)境變量、標準輸入輸出、返回狀態(tài)等等。docker 每進行一次相應的操作都會   生成一個相應的 Job,比如創(chuàng)建一個容器、下載一個文件等等都是由 job 完成的。 DockerDriver
  DockerDriver 是 docker 內部的驅動模塊,負責容器內部相關網絡、文件系統(tǒng)等的構建
  
  libcontainer
  libcontainer 主要是對 linux 內核的一些諸如 namespace、cgroups、capabilities 等特性做了封裝
  
  Graph
  DockerRegistry(私有倉庫) Docker Container:運行應用程序的特定容器,是容器服務的交付實體 ***
** 總結:文檔(網上)Docker 核心概念
容器技術的核心概念有容器 (container)、鏡像(image)、倉庫(registry) 三個。容器:具體的運行應用程序的一個進程,它里面包含應用程序的各種依賴。鏡像:創(chuàng)建容器的模板,根據(jù)不同配置的鏡像來創(chuàng)建不同的容器使用。鏡像和容器的關系可以理解為面向對象中類和實例對象的關系。倉庫:一個鏡像只可以創(chuàng)建一種類型的容器,鏡像多了就需要放到鏡像倉庫中存起來,倉庫有本地鏡像倉庫和公共鏡像倉庫,平時使用本地倉庫的鏡像,沒有的話去 Registry hub 公共鏡像倉庫下載。Docker 架構
Docker 框架主要由 Docker Client、Docker Daemon、Docker Registry、Driver、Docker Container 五個模塊組成,另外還有 Graph 和 Libcontainer 兩個輔助模塊,如下圖所示:Docker 架構
Docker Client:  用戶通過 Docker Client 與 Docker Daemon 進行通信,利用命令行發(fā)送創(chuàng)建鏡像、運行容器之類的請求。Docker Daemon:Docker Daemon 是 Docker 架構中一個常駐在后臺的系統(tǒng)進程,接受并處理 Docker Client 發(fā)送的請求。該守護進程在后臺啟動了一個 Server,Server 負責接受 Docker Client 發(fā)送的請求;然后通過路由與分發(fā)調度,找到相應的 Handler 來執(zhí)行請求。Docker Registry:存儲容器鏡像的倉庫。Driver: Driver 是 Docker 架構中的驅動模塊。通過 Driver 驅動,Docker 可以實現(xiàn)對 Docker 容器執(zhí)行環(huán)境的定制。包含管理容器鏡像的 graphdriver 驅動,配置容器內網絡環(huán)境的 networkdriver 驅動,execdriver 用來創(chuàng)建和維護容器。Docker Container:運行應用程序的特定容器,是容器服務的交付實體。一般運行流程為:用戶在 Docker Client 端通過命令行發(fā)送請求到 Docker Daemon,Docker Daemon 中的 Server 收到請求后,Engine 會創(chuàng)建一個工作任務 job,通過調用 Driver 模塊的各個驅動分別執(zhí)行不同的任務,比如需要鏡像就調用 graphdriver 從鏡像倉庫下載鏡像,創(chuàng)建容器時也需要調用其它兩個驅動來配置網絡和創(chuàng)建并維護容器。最后生成運行中的容器或者上傳鏡像到鏡像倉庫等。當想使用容器來跑自己的應用程序時,首先需要明確應用程序依賴的環(huán)境,如果本地有現(xiàn)成鏡像可以直接使用來運行容器跑應用,沒有的話可以通過 docker pull 去 registry hub 下載,或者自己創(chuàng)建所需要的鏡像。可以使用 dockerfile 來創(chuàng)建鏡像,首先編輯一個 dockerfile 文件,其中
FROM  表示這個鏡像是基于哪個鏡像來建立
MAINTAINER  表示這個鏡像是由誰來維護
RUN  告訴鏡像要執(zhí)行的操作,比如更新或安裝一個軟件等,會新建一個鏡像層。EXPOSE  表示暴露的端口。ENV  表示配置環(huán)境變量
CMD  設置容器啟動后默認執(zhí)行的命令及其參數(shù),這條命令會在容器啟動而且 docker run 沒有指定其它命令時運行,如果 docker run 指定了其它命令,CMD 指定的默認命令將被忽略。CMD 有三種格式:Exec 格式:CMD [“executable”,“param1”,“param2”]
CMD [ “param1”,“param2”]  一般使用這個,為 ENTRYPOINT 提供默   認參數(shù)
Shell 格式:CMD command param1 param2
ENTRYPOINT  配置容器啟動時運行的命令。與 CMD 不同的是,ENTRYPOINT 的指令一定會被運行,即使運行 docker run 時指定了其它命令。 ENTRYPOINT 有兩種格式:Exec 格式:ENTRYPOINT [“executable”,“param1”,“param2”]
Shell 格式:ENTRYPOINT command param1 param2
一般優(yōu)先使用  Exec  格式的  ENTRYPOINT  指令。CMD  可為  ENTRYPOINT  提供額外的默認參數(shù),同時可利用  docker run  命令行替換默認參數(shù)。Docker build  創(chuàng)建鏡像
Docker run  利用鏡像運行容器
Docker image  關于鏡像的一系列操作
Docker pull  從鏡像倉庫下載鏡像到本地倉庫
Docker push  上傳鏡像到鏡像倉庫
Docker container  執(zhí)行關于容器的一系列操作
Docker stats  實時監(jiān)控該節(jié)點容器的資源使用情況

docker 中容器架構、鏡像分層特性、dockerfile 緩特性的示例分析
鏡像的分層
1》dockerfile 的書寫格式為:Dockerfile
2》FROM:構建鏡像有兩種方式,一種是 scratch(從零構建),另一種可以基于某個鏡像開始構建。
3》鏡像所運行的操作,(用戶所期望的)

vim Dockerfile
docker 中容器架構、鏡像分層特性、dockerfile 緩特性的示例分析
運行一下
docker  build  -t centos7-vim-net-tools:12-11 .
. 點代表在當前目錄自動查找 Dockerfile 文件
docker 中容器架構、鏡像分層特性、dockerfile 緩特性的示例分析

注意:鏡像的查看順序,從上到下

Dockerfile 鏡像分層總結:
鏡像是容器的基石,容器是鏡像運行后的實例,當鏡像運行為容器后,對鏡像的所有數(shù)據(jù)僅有只讀權限,如果需要對鏡像源文件進行修改或刪除操做,此時實在容器層(可寫層)進行的,用到了 cow(copy on write)寫時復制機制

Docker 鏡像的緩存特性:
一個目錄最好只有一個 Dockerfile 文件
創(chuàng)建一個新的 dockerfile 文件
docker 中容器架構、鏡像分層特性、dockerfile 緩特性的示例分析
運行一下
docker build  -t  new-centos .
如果在相同的層有相同的鏡像,看可以不必在去下載,可以直接使用緩存。
即使相同的鏡像,在不同的層也會去下載

查看鏡像的歷史
docker history centos7-vim-net-tools:12-11
docker 中容器架構、鏡像分層特性、dockerfile 緩特性的示例分析
docker history new-centos:latest
docker 中容器架構、鏡像分層特性、dockerfile 緩特性的示例分析
Mkdir  test1 在創(chuàng)建一個 dockerfile
docker 中容器架構、鏡像分層特性、dockerfile 緩特性的示例分析

即使鏡像操做一樣,也必須是在同一層才可以使用 dockerfile 的緩存特性。
如果制作鏡像過程中,不想使用緩存,可以加 –no-cache 選項。

以上是“docker 中容器架構、鏡像分層特性、dockerfile 緩特性的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業(yè)資訊頻道!

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-08-25發(fā)表,共計4119字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發(fā)布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 于都县| 濮阳县| 汝州市| 荆州市| 黄骅市| 汤原县| 抚远县| 合作市| 宜良县| 石屏县| 临武县| 台前县| 大洼县| 宝兴县| 靖西县| 调兵山市| 泸西县| 桦南县| 会昌县| 建宁县| 酒泉市| 汾西县| 仁寿县| 皮山县| 寿光市| 宝兴县| 华容县| 新源县| 金平| 太保市| 称多县| 连云港市| 开封县| 三门峡市| 治县。| 平和县| 滦平县| 揭阳市| 南康市| 娄烦县| 金昌市|