在容器化的環境中,文件系統是一個非常關鍵的因素。Docker使用一種名為UnionFS(聯合文件系統)的技術,將不同的文件系統“堆疊”在一起,形成一個統一的文件系統。
Docker中的文件系統可以分為三層:
1. 鏡像層:Docker鏡像中的文件系統,在創建容器時會被掛載為只讀模式。 2. 容器層:容器啟動時創建的可寫層,其中的文件會覆蓋鏡像層中的文件。 3. 數據卷層:容器中的數據卷,可以用來持久化存儲數據。
Docker的UnionFS技術可以將多個文件系統疊加在一起,使得它們看起來像是一個整體。當容器啟動時,Docker會為容器創建一個可寫層,該層會覆蓋原始鏡像的只讀文件系統。
由于可寫層是臨時的,當容器停止并刪除時,所有在可寫層上所做的更改都會被銷毀。為了使數據持久化,可以使用Docker的數據卷層。
docker run -v /data:/var/www/html myimage
以上命令會將主機的 /data 目錄掛載到容器中的 /var/www/html 目錄上。因此,容器中對 /var/www/html 的任何更改都會被保存到主機上的 /data 目錄中。這也意味著,即使容器被刪除,數據仍然存在于主機上。