CodeGym /Adesua ahorow /Docker SELF /將磁碟掛載到容器中

將磁碟掛載到容器中

Docker SELF
等級 19 , 課堂 2
開放

3.1 掛載卷的基礎

將卷(volumes)掛載到容器中是 Docker 的一個關鍵功能,可以讓數據存儲在容器生命周期之外,保證數據的長期保存和可訪問性。卷可以用於多種目的,包括存儲配置文件、數據庫、日誌和其他重要的數據。在這節課裡,我們會討論如何將卷掛載到容器中,並提供一些實際的例子。

掛載卷的基礎

正如我們之前提到的,卷的存在獨立於容器的生命周期。它們存儲在主機機器上的專用目錄中,並可被任何容器連接使用。

用於掛載卷的指令

卷透過在啟動容器時使用參數 -v--mount 來掛載到容器中。

3.2 參數 -v

使用參數 -v 的範例

1. 將 Volume 掛載到容器

創建 Volume 並將其掛載到容器:

創建 Volume:

Terminal

docker volume create my_volume

啟動帶有 Volume 掛載的容器:

Terminal

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

在這個例子中,Volume my_volume掛載到容器my_container的目錄/app中。

2. 掛載多個 Volume

你可以將多個 Volume 掛載到同一個容器:

Terminal

docker run -d --name my_container -v volume1:/app/data -v volume2:/app/logs nginx

在這個例子中,Volume volume1 掛載到目錄 /app/data, 而 Volume volume2 則掛載到目錄 /app/logs

3.3 參數 --mount

參數 --mount 提供了一種更加詳細的方式來掛載卷,並允許指定各種參數。

1. 使用 --mount 掛載卷

Terminal

docker run -d --name my_container --mount source=my_volume,target=/app nginx

這個例子和之前用 -v 的例子類似,但使用了更詳細的語法。

2. 掛載帶有額外參數

Terminal

docker run -d --name my_container --mount source=my_volume,target=/app,readonly nginx

在這個例子中,卷被以只讀模式(readonly)掛載。

3.4 實際範例

範例 1: 為資料庫使用 Volumes

創建並使用一個 Volume 來儲存資料庫數據。

創建 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

在此範例中,PostgreSQL 資料庫的數據保存於 Volume db_data 中。

範例 2: 為配置文件使用 Volumes

創建用於存儲配置文件的 Volume,並將其掛載到容器中。

創建 Volume:

Terminal

docker volume create config_data

將配置文件複製到 Volume:

Terminal

docker run --rm -v config_data:/app busybox sh -c "echo 'configuration data' > /app/config.txt"

啟動使用配置文件 Volume 的容器:

Terminal

docker run -d --name my_app -v config_data:/app/config nginx

在此範例中,配置文件被保存於 Volume config_data 中,並掛載至容器的目錄 /app/config

範例 3: 容器日誌

創建用於存儲容器日誌的 Volume,並將其掛載到容器中。

創建 Volume:

Terminal

docker volume create logs_data

啟動掛載有用於日誌 Volume 的容器:

Terminal

docker run -d --name my_app -v logs_data:/var/log/nginx nginx

在此範例中,Nginx 的日誌保存於 Volume logs_data 中。

3.5 檢查卷的内容

你可以通過將卷掛載到臨時容器來檢查其内容。

範例

啟動臨時容器並掛載卷:

Terminal

docker run --rm -v my_volume:/app busybox ls /app

此範例會顯示卷 my_volume 的内容。

刪除卷

刪除不再使用的卷。

範例

刪除卷:

Terminal

docker volume rm my_volume

如果卷正被容器使用,Docker 會顯示錯誤信息。請確保使用該卷的容器已被停止並刪除。

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