1. 程式人生 > >Docker基礎 4.Docker映象

Docker基礎 4.Docker映象

Docker基礎

@Author:hanguixian
@Email:[email protected]

Docker文件:https://docs.docker.com/

Dcker中文文件:https://docs.docker-cn.com/


四.Docker映象

1.是什麼?

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

  • UnionFS (聯合檔案系統)
    • UnionFS (聯合檔案系統) : Union檔案系統(UnionFS) 是一種分層、輕量級並且高效能的檔案系統,它支援對檔案系統的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬檔案系統下(unite several directories into a single virtualfilesystem)。Union 檔案系統是Docker映象的基礎。映象可以通過分層來進行繼承,基於基礎映象(沒有父映象),可以製作各種具體的應用映象。
    • 特性:一次同時載入多個檔案系統,但從外面看起來,只能看到一個檔案系統,聯合載入會把各層檔案系統疊加起來,這樣最終的檔案系統會包含所有底層的檔案和目錄
  • Docker映象載入原理:

    • docker的映象實際上由一層一層的檔案系統組成,這種層級的檔案系統UnionFS。

    • bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引導載入kernel, Linux剛啟動時會載入bofs檔案系統,在Docker映象的最底層是bootfs。 這一層與我們典型的Linux/Unix系統是一樣的,包含boot載入器和核心。當boot載入完成之後整個核心就都在記憶體中了,此時記憶體的使用權已由bootfs轉交給核心, 此時系統也會解除安裝bootfs。

    • rootfs (root file system),在bootfs之上。包含的就是典型Linux系統中的/dev, /proc, /bin, /etc等標準目錄和檔案。rootfs就是各種不同的作業系統發行版,比如Ubuntu, Centos等等。

    • 平時我們安裝進虛擬機器的CentOS都是好幾個G,為什麼docker這 裡才200M?

    • 對於一個精簡的OS,rootfs可以很小,只需要包括最基本的命令、工具和程式庫就可以了,因為底層直接用Host的kernel,自己只需要提供rootfs就行了。由此可見對於不同的linux發行版,bootfs基本是一致的,rootfs會有差別,因此不同的發行版可以公用bootfs。

    • tomcat為什麼那麼大 ? 一層又一層

    TOMCAT

  • 分層的映象

    • 在下載的過程中我們可以看到一層層的在下載
  • 為什麼Docker映象要採用這種分層結構
    • 最大的一個好處就是一共享資源
    • 比如:有多個映象都從相同的base映象構建而來,那麼宿主機只需在磁碟上儲存一份base映象, 同時記憶體中也只需載入一份base映象,就可以為所有容器服務了。而且映象的每一層都可以被共享。

2.特點

Docker映象都是隻讀的當容器啟動時,一個新的可寫層被載入到映象的頂部。 這一層通常被稱作“容器層”,“容器層”之下的都叫”映象層”。

3.docker映象commit操作

  • docker commit提交容器副本使之成為一個新的映象

  • docker commit -m=“提交的描述資訊” -a=“作者” 容器ID 要建立的目標映象名:[標籤名]

  • 案例

    • 1.從Hub上下載tomcat映象到本地併成功執行

    • 2.故意刪除上一步映象生產tomcat容器的文件

    • 命令:

      • 進入到容器中: docker exec -it 容器id /bin/bash
      • 進入到目錄中: cd webapps/
      • 刪除docs : rm -rf docs
    • 3.即當前的tomcat執行例項是一個沒有文件內容的容器, 以它為模板commit一 個沒有doc的tomcat新映象hanguixian/tomcat001 —-> 名稱空間

    • 命令: docker commit -a=”mmhh” -m=”tomcat without docs” 200e52fdf06d hanguixian/tomcat001:0.1

    • 效果:產生一個映象: docker images

      REPOSITORY TAG IMAGE ID CREATED SIZE
      hanguixian/tomcat001 0.1 d5738d710d02 14 seconds ago 463MB
    • 啟動我們的新映象並和原來的對比

    • 很明顯我們修改後的沒有docs,而原來的是存在的