保存容器資料
說明
當容器啟動時,它會使用映像檔提供的檔案和設定。每個容器都能夠建立、修改和刪除檔案,而且不會影響其他容器。刪除容器時,這些檔案變更也會被刪除。
雖然容器的這種暫時性很好,但當您想要保存資料時,這就構成了一個挑戰。例如,如果您重新啟動資料庫容器,您可能不想從空的資料庫開始。那麼,您如何保存檔案呢?
容器磁碟區
磁碟區是一種儲存機制,它能夠將資料保存到個別容器的生命週期之外。可以將其想像成提供從容器內部到容器外部的捷徑或符號連結。
例如,假設您建立了一個名為 `log-data` 的磁碟區。
$ docker volume create log-data
使用以下命令啟動容器時,磁碟區將會掛載(或附加)到容器中的 `/logs`
$ docker run -d -p 80:80 -v log-data:/logs docker/welcome-to-docker
如果 `log-data` 磁碟區不存在,Docker 會自動為您建立它。
當容器運行時,它寫入 `/logs` 資料夾的所有檔案都會儲存在這個磁碟區中,位於容器外部。如果您刪除容器並使用相同的磁碟區啟動新的容器,檔案仍然會存在。
使用磁碟區共用檔案
您可以將同一個磁碟區附加到多個容器,以便在容器之間共用檔案。這在日誌聚合、資料管道或其他事件驅動的應用程式等情況下可能很有用。
管理磁碟區
磁碟區具有超出容器的生命週期,並且可以根據您使用的資料和應用程式的類型而變得相當大。以下命令將有助於管理磁碟區
- `docker volume ls` - 列出所有磁碟區
- `docker volume rm <磁碟區名稱或 ID>` - 移除磁碟區(僅在磁碟區未附加到任何容器時才有效)
- `docker volume prune` - 移除所有未使用的(未附加的)磁碟區
試用看看
在本指南中,您將練習建立和使用磁碟區來保存 Postgres 容器建立的資料。當資料庫運行時,它會將檔案儲存在 `/var/lib/postgresql/data` 目錄中。透過將磁碟區附加到這裡,您將能夠在保留資料的同時多次重新啟動容器。
使用磁碟區
下載並安裝 Docker Desktop。
使用 Postgres 映像檔