VOLUME 定義匿名卷
格式為:
VOLUME ["<路徑1>", "<路徑2>"...]
VOLUME <路徑>
之前我們說過,容器執行時應該盡量保持容器儲存層不發生寫作業,對於資料庫等級需要儲存動態資料的應用,其資料庫檔案應該儲存於卷(volume)中,後面的章節我們會進一步介紹 Docker 卷的概念。為了防止執行時使用者忘記將動態檔案所儲存目錄載入為卷,在 Dockerfile
中,我們可以事先指定某些目錄載入為匿名卷,這樣在執行時如果使用者不指定載入,其應用也可以正常執行,不會向容器儲存層寫入大量資料。
VOLUME /data
這裡的 /data
目錄就會在執行時自動載入為匿名卷,任何向 /data
中寫入的資訊都不會記錄進容器儲存層,從而保證了容器儲存層的無狀態化。當然,執行時可以覆寫這個載入設定。比如:
docker run -d -v mydata:/data xxxx
在這行指令中,就使用了 mydata
這個命名卷載入到了 /data
這個位置,替代了 Dockerfile
中定義的匿名卷的載入設定。