Docker | 映象淺析,以及製作自己的映象

2022-10-08 12:00:27

分層下載,docker image 的核心: 聯合檔案系統

映象是什麼

映象就是一個輕量的、獨立的軟體包。用來打包執行環境和基於執行環境開發的軟體。它包含軟體執行所需的所有內容(包括程式碼、執行時、庫、環境變數、組態檔)

所有的應用,打包docker映象,就可以跑起來。

如何得到映象

  • 從遠端倉庫下載

  • 拷貝他人的映象(映象打包生成tar壓縮包,可以傳送壓縮包給別人。)

  • 自己製作一個映象(DockerFile

Docker映象載入原理

UnionFS(聯合檔案系統)

  1. UnionFS(聯合檔案系統)是一種分層、輕量、高效能的檔案系統。它支援對檔案系統的修改作為一次提交,來一層一層的疊加,同時可以將不同目錄掛載到同一個虛擬檔案系統下。

  2. 聯合檔案系統是Docker映象的基礎,映象可以通過分層來進行繼承,基於基礎映象(沒有父映象)可以製作各種具體的應用映象。

特性

一次同時載入多個檔案系統,但從外面看起來,只能看到一個檔案系統,聯合載入會把各層檔案系統疊加起來,這樣最終的檔案系統會包含所有底層的檔案和目錄。

Docker映象載入原理:

Docker的映象實際上由一層一層的檔案系統組成,

  • bootfs(boot file syatem)
  • rootfs(root file system),

就是各種作業系統的發行版,比如UbuntuCentos

分層理解

  • 檢視映象詳細資訊
docker inspect 映象id

  • Layers

特點:

docker映象都是唯讀的,當容器啟動時,一個新的可寫層被加到映象的頂部。

這一層就是我們通常說的容器層,容器之下的都叫映象層

commit映象(提交一個自己的映象)

docker commit #提交容器成為一個新的副本

#命令和git原理類似
docker commit -m='提交的描述資訊' -a='作者' 容器id 目標映象名:[ tag ]

下載的tomcat映象是閹割版,啟動之後404,因為webapps下面沒有ROOT資料夾,所以這裡嘗試做一個自己的可正常存取tomcat主頁的映象。(由於映象唯讀,啟動映象之後會在映象層之上生成一個容器層,在tomcat容器層做修改,再把映象層和修改過後的容器層整體打包成一個新的個人映象)

1、下載tomcat映象

docker pull tomcat

2、啟動tomcat映象

docker run -it -p 3355:8080 tomcat /bin/bash

3、瀏覽器存取404

4、進入容器,複製webapps.dist目錄下的檔案到webapps目錄下

5、提交映象

docker commit -m="edit webapps dir" -a="xiao" 容器id tomcat02:1.0

6、檢視提交的映象資訊

docker inspect [imageId]

總結


我是 甜點cc

熱愛前端,也喜歡專研各種跟本職工作關係不大的技術,技術、產品興趣廣泛且濃厚,等待著一個創業機會。本號主要致力於分享個人經驗總結,希望可以給一小部分人一些微小幫助。

希望能和大家一起努力營造一個良好的學習氛圍,為了個人和家庭、為了我國的網際網路物聯網技術、數位化轉型、數位經濟發展做一點點貢獻。數風流人物還看中國、看今朝、看你我。