中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-11-24 11:31:22 來源:億速云 閱讀:277 作者:小新 欄目:云計算

小編給大家分享一下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的包中創建一個mux.Router路由器,然后為路由器中添加相關的路由項用于路由信息, 每個路由項由HTTP請求方法(get,post,put,delete)+URL+Handler三部分組成。
> DockerServer每收到一個請求就會生成一個goroutine然后進行相應的解析、匹配相應的路由項最后會找到相匹配的Handler來處理,Handler處理玩請求之后給DockerClient返回響應
> 2.Engine
> Engine是docker中的運行引擎,存儲著大量的容器信息并管理著大部分job的執行。
> 
> job是docker中的最小執行單元,類似于unix中的進程,也會有相應的名字、參數、環境變量、標準輸入輸出、返回狀態等等。docker每進行一次相應的操作都會 生成一個相應的Job,比如創建一個容器、下載一個文件等等都是由job完成的。
> DockerDriver
> DockerDriver是docker內部的驅動模塊,負責容器內部相關網絡、文件系統等的構建
> 
> libcontainer
> libcontainer主要是對linux內核的一些諸如namespace、cgroups、capabilities等特性做了封裝
> 
> Graph
> DockerRegistry(私有倉庫)
> Docker Container:運行應用程序的特定容器,是容器服務的交付實體***

**總結:文檔(網上)
Docker核心概念
**
容器技術的核心概念有容器(container)、鏡像(image)、倉庫(registry)三個。

容器:具體的運行應用程序的一個進程,它里面包含應用程序的各種依賴。

鏡像:創建容器的模板,根據不同配置的鏡像來創建不同的容器使用。鏡像和容器的關系可以理解為面向對象中類和實例對象的關系。

倉庫:一個鏡像只可以創建一種類型的容器,鏡像多了就需要放到鏡像倉庫中存起來,倉庫有本地鏡像倉庫和公共鏡像倉庫,平時使用本地倉庫的鏡像,沒有的話去Registry hub公共鏡像倉庫下載。

Docker架構

Docker框架主要由Docker Client、Docker Daemon、Docker Registry、Driver、Docker Container五個模塊組成,另外還有Graph和Libcontainer兩個輔助模塊,如下圖所示:

Docker架構

Docker Client: 用戶通過Docker Client與Docker Daemon進行通信,利用命令行發送創建鏡像、運行容器之類的請求。

Docker Daemon:Docker Daemon是Docker架構中一個常駐在后臺的系統進程,接受并處理Docker Client發送的請求。該守護進程在后臺啟動了一個Server,Server負責接受Docker Client發送的請求;然后通過路由與分發調度,找到相應的Handler來執行請求。

Docker Registry:存儲容器鏡像的倉庫。

Driver: Driver是Docker架構中的驅動模塊。通過Driver驅動,Docker可以實現對Docker容器執行環境的定制。包含管理容器鏡像的graphdriver驅動,配置容器內網絡環境的networkdriver驅動,execdriver用來創建和維護容器。

Docker Container:運行應用程序的特定容器,是容器服務的交付實體。

一般運行流程為:用戶在Docker Client端通過命令行發送請求到Docker Daemon,Docker Daemon中的Server收到請求后,Engine會創建一個工作任務job,通過調用Driver模塊的各個驅動分別執行不同的任務,比如需要鏡像就調用graphdriver從鏡像倉庫下載鏡像,創建容器時也需要調用其它兩個驅動來配置網絡和創建并維護容器。最后生成運行中的容器或者上傳鏡像到鏡像倉庫等。

容器應用

當想使用容器來跑自己的應用程序時,首先需要明確應用程序依賴的環境,如果本地有現成鏡像可以直接使用來運行容器跑應用,沒有的話可以通過docker pull去registry hub下載,或者自己創建所需要的鏡像。

可以使用dockerfile來創建鏡像,首先編輯一個dockerfile文件,其中

FROM 表示這個鏡像是基于哪個鏡像來建立

MAINTAINER 表示這個鏡像是由誰來維護

RUN 告訴鏡像要執行的操作,比如更新或安裝一個軟件等,會新建一個鏡像層。

EXPOSE 表示暴露的端口。

ENV 表示配置環境變量

CMD 設置容器啟動后默認執行的命令及其參數,這條命令會在容器啟動而且docker run沒有指定其它命令時運行,如果docker run指定了其它命令,CMD指定的默認命令將被忽略。

CMD有三種格式:

Exec格式:CMD [“executable”,“param1”,“param2”]
CMD [ “param1”,“param2”] 一般使用這個,為ENTRYPOINT提供默             認參數
Shell格式:CMD command param1 param2
ENTRYPOINT 配置容器啟動時運行的命令。與CMD不同的是,ENTRYPOINT的指令一定會被運行,即使運行docker run時指定了其它命令。

        ENTRYPOINT有兩種格式:

Exec格式:ENTRYPOINT [“executable”,“param1”,“param2”]
Shell格式:ENTRYPOINT command param1 param2
一般優先使用 Exec 格式的 ENTRYPOINT 指令。CMD 可為 ENTRYPOINT 提供額外的默認參數,同時可利用 docker run 命令行替換默認參數。

常用命令

Docker build 創建鏡像

Docker run  利用鏡像運行容器

Docker image 關于鏡像的一系列操作

Docker pull  從鏡像倉庫下載鏡像到本地倉庫

Docker push  上傳鏡像到鏡像倉庫

Docker container 執行關于容器的一系列操作

Docker stats 實時監控該節點容器的資源使用情況

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

Docker鏡像的緩存特性:
一個目錄最好只有一個Dockerfile文件
創建一個新的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 在創建一個dockerfile
docker中容器架構、鏡像分層特性、dockerfile緩特性的示例分析

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平顺县| 民权县| 澳门| 抚远县| 甘肃省| 共和县| 大理市| 淮南市| 阜康市| 常州市| 巴中市| 措美县| 安陆市| 文昌市| 南和县| 鄱阳县| 岳阳市| 永胜县| 区。| 文化| 吐鲁番市| 乐都县| 华阴市| 临洮县| 渭源县| 台江县| 安乡县| 东明县| 大庆市| 锡林浩特市| 雷州市| 平顶山市| 新巴尔虎左旗| 如皋市| 伊金霍洛旗| 巨鹿县| 潼南县| 杨浦区| 平果县| 安庆市| 肇源县|