CodeGym /Adesua ahorow /Docker SELF /Docker 中資料存儲基礎

Docker 中資料存儲基礎

Docker SELF
等級 19 , 課堂 0
開放

1.1 Volumes(卷)

在 Docker 中存儲資料是使用 container 時很重要的一部分。Container 本身是暫時性的,這意味著 container 裡面的資料會在停止或刪除 container 後丟失。為了在多次啟動之間保存資料並保證它們的長期存儲,Docker 提供了兩種主要技術:Volumes(卷)和 bind mounts(綁定目錄)。

Volumes(卷)

Volumes 是由 Docker 管理的資源,用於存儲資料。它們的存在獨立於 container 的生命周期,這讓它們可以用來長期存儲資料。Volumes 可以由 Docker 建立和管理,提供了一種方便的方式來將資料存儲在 container 外。

使用 Volumes 的優勢

  1. 與主機隔離:Volumes 儲存在 Docker 管理的主機中的特殊目錄中,這保證了它們的隔離性。
  2. 管理方便:Docker 提供了方便的命令來創建、刪除和管理 Volumes。
  3. 兼容性和可移植性:Volumes 可以輕鬆地在不同主機之間移動並與不同的 container 一起使用。

創建和使用 Volumes 的範例

創建 Volume:

Terminal

docker volume create my_volume

在容器中使用 Volume:

在這個範例中,Volume my_volume 被掛載到 container my_container 的目錄 /data 中。

Terminal

docker run -d --name my_container -v my_volume:/data nginx

1.2 綁定目錄 (Bind Mounts)

綁定目錄允許將主機上的特定目錄掛載到容器中。這讓容器可以使用主機上的文件和目錄,這對於開發和測試特別有用,當需要處理本地文件時尤其如此。

使用綁定目錄的優點:

  1. 直接訪問主機文件: 容器可以直接使用主機上的文件和目錄。
  2. 開發便利性: 開發人員可以輕鬆地修改主機上的文件,並即時在容器中查看這些更改。
  3. 靈活性: 綁定目錄可以是主機上的任何目錄,提供了更大的數據管理靈活性。

綁定目錄的使用範例

啟動帶有綁定目錄的容器:

Terminal

docker run -d --name my_container -v /path/on/host:/data nginx

在這個例子中,主機上的目錄 /path/on/host 被掛載到容器 my_container 內的目錄 /data 中。

卷 (Volumes) 和綁定目錄的比較:

特性 綁定目錄
數據存儲 由 Docker 管理 由用戶管理
隔離性 與主機的文件系統隔離 使用主機的文件系統
性能 為 Docker 優化 依賴於主機的文件系統
適用性 長期存儲數據 開發和測試

1.3 實踐範例

使用的實踐範例

範例 1: 使用 volumes 對於數據庫

為了確保數據庫資料的長期存儲,可以使用 volumes。

創建 volume:

Terminal

docker volume create db_data

使用 volume 啟動數據庫容器:

Terminal

docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v 
db_data:/var/lib/postgresql/data postgres

範例 2: 使用掛載目錄進行網頁開發

開發網頁應用程式時,可以使用掛載目錄,這樣本地文件的更改會立即反映在容器中。

使用掛載目錄啟動容器:

Terminal

docker run -d --name web_dev -v $(pwd)/my_website:/usr/share/nginx/html nginx

在此範例中,當前工作目錄 my_website 被掛載到容器 nginx/usr/share/nginx/html 目錄中。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION