500行程式碼程式碼手寫docker-將rootfs設定為唯讀映象

2023-05-24 12:00:23

(3)500行程式碼程式碼手寫docker-將rootfs設定為唯讀映象

本系列教學主要是為了弄清楚容器化的原理,紙上得來終覺淺,絕知此事要躬行,理論始終不及動手實踐來的深刻,所以這個系列會用go語言實現一個類似docker的容器化功能,最終能夠容器化的執行一個程序。

本章的原始碼已經上傳到github,地址如下:

https://github.com/HobbyBear/tinydocker/tree/chapter3

前文提到,如果僅僅將ubuntu-base-16.04.6-base-amd64 目錄作為容器的根目錄, 那麼當執行多個容器,就會同時修改到ubuntu-base-16.04.6-base-amd64目錄,這樣將達不到不同容器使用不同的根檔案系統的目的。

所以這節我將會演示如何執行核心提供到聯合檔案系統的功能,來達到一份映象,多次執行的目的。

這節程式碼執行效果:

可以看到我其實啟動了兩個容器 hello1 ,hello2 然後在hello1 下建立test目錄,但是test目錄在hello2容器裡是不可見的。

聯合檔案系統原理

首先,來先簡單的看看聯合檔案系統的概念。