儲存
預設情況下,在容器內建立的所有檔案都儲存在一個位於只讀、不可變映象層之上的可寫容器層中。
寫入容器層的資料在容器被銷燬時不會持久化。這意味著如果另一個程序需要這些資料,很難將它們從容器中取出。
可寫層對每個容器都是唯一的。您無法輕易地將資料從可寫層提取到主機或其他容器。
儲存掛載選項
Docker 支援以下型別的儲存掛載,用於將資料儲存在容器的可寫層之外:
無論您選擇使用哪種型別的掛載,從容器內部看,資料都是一樣的。它在容器的檔案系統中以目錄或單個檔案的形式暴露出來。
卷掛載
卷是由 Docker 守護程序管理的持久化儲存機制。即使使用它們地容器被移除,它們也能保留資料。卷資料儲存在主機的檔案系統上,但要與卷中的資料互動,您必須將卷掛載到容器。直接訪問或與卷資料互動是不支援的、未定義的行為,並可能導致卷或其資料以意想不到的方式損壞。
卷是效能關鍵型資料處理和長期儲存需求的理想選擇。由於儲存位置在守護程序主機上管理,卷提供了與直接訪問主機檔案系統相同的原始檔案效能。
繫結掛載
繫結掛載在主機系統路徑和容器之間建立直接連結,允許訪問儲存在主機上任何位置的檔案或目錄。由於它們不受 Docker 隔離,主機上的非 Docker 程序和容器程序都可以同時修改掛載的檔案。
當您需要能夠從容器和主機兩端訪問檔案時,請使用繫結掛載。
tmpfs 掛載
tmpfs 掛載直接將檔案儲存在主機的記憶體中,確保資料不會寫入磁碟。這種儲存是臨時的:當容器停止或重啟,或主機重啟時,資料會丟失。tmpfs 掛載不會在 Docker 主機或容器的檔案系統中持久化資料。
這些掛載適用於需要臨時記憶體儲存的場景,例如快取中間資料、處理憑證等敏感資訊或減少磁碟 I/O。僅當資料不需要在當前容器會話結束後持久化時,才使用 tmpfs 掛載。
命名管道
命名管道可用於 Docker 主機和容器之間的通訊。常見用例是在容器內執行第三方工具,並使用命名管道連線到 Docker Engine API。