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

溫馨提示×

溫馨提示×

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

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

docker鏡像的使用

發布時間:2020-06-03 21:23:58 來源:億速云 閱讀:318 作者:Leah 欄目:云計算

這篇文章的知識點包括:docker鏡像的安裝下載、docker鏡像分層以及docker鏡像的緩存特性,閱讀完整文相信大家對docker的鏡像有了一定的認識。
下載鏡像(dockerfile的組成)
docker pull hello-world
docker鏡像的使用

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

Base鏡像
(基礎鏡像)
docker鏡像的使用
docker鏡像的使用

> ***個人理解:
> 用戶空間: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鏡像的使用
鏡像的分層
1》dockerfile的書寫格式為:Dockerfile
2》FROM:構建鏡像有兩種方式,一種是scratch(從零構建),另一種可以基于某個鏡像開始構建。
3》鏡像所運行的操作,(用戶所期望的)

vim Dockerfile
docker鏡像的使用
運行一下
docker  build  -t centos7-vim-net-tools:12-11 .
. 點代表在當前目錄自動查找Dockerfile文件
docker鏡像的使用

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

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

Docker鏡像的緩存特性:
一個目錄最好只有一個Dockerfile文件
創建一個新的dockerfile文件
docker鏡像的使用
運行一下
docker build  -t  new-centos .
如果在相同的層有相同的鏡像,看可以不必在去下載,可以直接使用緩存。
即使相同的鏡像,在不同的層也會去下載

查看鏡像的歷史
docker history centos7-vim-net-tools:12-11
docker鏡像的使用
docker history new-centos:latest
docker鏡像的使用
Mkdir  test1 在創建一個dockerfile
docker鏡像的使用

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

看完上述內容,你們對docker鏡像有進一步的了解嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀。

向AI問一下細節

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

AI

珲春市| 宣武区| 久治县| 连城县| 冷水江市| 彝良县| 镇雄县| 高州市| 二连浩特市| 勐海县| 永安市| 琼结县| 大连市| 琼海市| 清原| 泗水县| 宁德市| 南溪县| 东乡| 大名县| 泉州市| 柘荣县| 青岛市| 新宁县| 富阳市| 阿拉善右旗| 崇明县| 左云县| 新营市| 通江县| 永安市| 乌鲁木齐市| 天峻县| 沭阳县| 华亭县| 青岛市| 宁晋县| 凌云县| 扎赉特旗| 和平县| 日喀则市|