1. 程式人生 > 其它 >03 Docker映象詳解

03 Docker映象詳解

Docker映象詳解

什麼是映象

映象是一種輕量級、可執行的獨立軟體包,用來打包軟體執行環境和基於執行環境開發的軟體,它包含執行某個軟體所需要的所有內容,包括程式碼,執行時(一個程式在執行或者在被執行的依賴)、庫,環境變數和配置檔案。

Docker映象載入原理

Docker的映象實際上由一層一層的檔案系統組成,這種層級的檔案系統是UnionFS聯合檔案系統。

分層理解

分層的映象

我們去下載一個映象,觀察下方的日誌輸出,可以看到一層一層的在下載

[root@vdevops ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
e5ae68f74026: Already exists 
37c4354629da: Pull complete 
b065b1b1fa0f: Pull complete 
6954d19bb2e5: Pull complete 
6333f8baaf7c: Pull complete 
f9772c8a44e7: Pull complete 
Digest: sha256:2f502d27c3e9b54295f1c591b3970340d02f8a5824402c8179dcd20d4076b796
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest

為啥 映象要採用這種分層結構

最大的好處,莫過於資源共享,比如有多個映象都從相同的Base映象構建而來,那麼宿主機只需在磁碟上保留一份base映象,同時記憶體中只需要載入一份base映象,這樣就可以為所有的容器服務,而且映象的每一層都可以被共享。檢視映象分層的方式可以通過 docker image inspect



commit 映象

如何提交自己的一個映象

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

docker commit -m="提交的描述資訊" -a="作者" 容器id 目標映象名: [TAG]
#1.啟動一個預設的tomcat

#2. 發現這個預設的 tomcat 是沒有webapps 應用的  官方的映象預設 webapps下面是沒有檔案的

#3.自己拷貝

#4. 將操作後的容器 通過 commit 提交  我們以後就是要修改過的映象
[root@vdevops ~]# docker commit -a="syyy" -m="add webapps app" a5538129234d tomcat1.0
sha256:c6e64ee3642d487261c131892dd668fffd484600b3464ff378bde1547dff89ea
[root@vdevops ~]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
tomcat1.0             latest    c6e64ee3642d   7 seconds ago   684MB
tomcat                9.0       3f3cadde9a68   12 days ago     680MB