建立 Docker 磁碟區

說明建立磁碟區
用法docker volume create [選項] [磁碟區]

說明

建立一個新的磁碟區,容器可以使用並在其中儲存資料。如果未指定名稱,Docker 會產生一個隨機名稱。

選項

選項預設值說明
--availabilityactiveAPI 1.42+ Swarm叢集磁碟區可用性 (activepausedrain)
-d, --driverlocal指定磁碟區驅動程式名稱
--groupAPI 1.42+ Swarm 叢集磁碟區群組(叢集磁碟區)
--label設定磁碟區的詮釋資料
--limit-bytesAPI 1.42+ Swarm 叢集磁碟區的最小大小(以位元組為單位)
-o, --opt設定驅動程式特定的選項
--required-bytesAPI 1.42+ Swarm 叢集磁碟區的最大大小(以位元組為單位)
--scopesingleAPI 1.42+ Swarm 叢集磁碟區的存取範圍 (singlemulti)
--secretAPI 1.42+ Swarm 叢集磁碟區密鑰
--sharingnoneAPI 1.42 以上版本 Swarm 集群磁碟區存取共享(nonereadonlyonewriterall
--topology-preferredAPI 1.42 以上版本 Swarm 集群磁碟區偏好的拓撲
--topology-requiredAPI 1.42 以上版本 Swarm 集群磁碟區必須可從中存取的拓撲
--typeblockAPI 1.42 以上版本 Swarm 集群磁碟區存取類型(mountblock

範例

建立磁碟區,然後設定容器以使用它

$ docker volume create hello

hello

$ docker run -d -v hello:/world busybox ls /world

掛載點建立在容器的 /world 目錄內。Docker 不支援容器內掛載點的相對路徑。

多個容器可以使用相同的磁碟區。如果兩個容器需要存取共用資料,這會很有用。例如,一個容器寫入資料,另一個容器讀取資料。

磁碟區名稱在驅動程式之間必須是唯一的。這表示您不能在兩個不同的驅動程式中使用相同的磁碟區名稱。嘗試建立兩個具有相同名稱的磁碟區將導致錯誤。

A volume named  "hello"  already exists with the "some-other" driver. Choose a different volume name.

如果您指定的磁碟區名稱已在目前的驅動程式上使用,Docker 會假設您要重複使用現有的磁碟區,並且不會傳回錯誤。

驅動程式特定選項 (-o, --opt)

某些磁碟區驅動程式可能會採用選項來自訂磁碟區建立。使用 -o--opt 旗標來傳遞驅動程式選項。

$ docker volume create --driver fake \
    --opt tardis=blue \
    --opt timey=wimey \
    foo

這些選項會直接傳遞到磁碟區驅動程式。不同磁碟區驅動程式的選項可能會執行不同的操作(或根本不執行任何操作)。

內建的 local 驅動程式在 Windows 上不接受任何選項。在 Linux 和 Docker Desktop 上,local 驅動程式接受類似於 Linux mount 命令的選項。您可以透過多次傳遞 --opt 旗標來提供多個選項。某些 mount 選項(例如 o 選項)可以採用以逗號分隔的選項清單。完整的可用掛載選項清單可以在這裡找到。

例如,以下建立一個大小為 100 MB 且 uid 為 1000 的 tmpfs 磁碟區,稱為 foo

$ docker volume create --driver local \
    --opt type=tmpfs \
    --opt device=tmpfs \
    --opt o=size=100m,uid=1000 \
    foo

另一個使用 btrfs 的範例

$ docker volume create --driver local \
    --opt type=btrfs \
    --opt device=/dev/sda2 \
    foo

另一個使用 nfsrw 模式從 192.168.1.1 掛載 /path/to/dir 的範例

$ docker volume create --driver local \
    --opt type=nfs \
    --opt o=addr=192.168.1.1,rw \
    --opt device=:/path/to/dir \
    foo