VOLUME 一句話總結
- 作用:創建一個匿名數據卷掛載點
- 格式: VOLUME ["/data"]
- 詳解:運行容器時可以從本地主機或其他容器掛載數據卷,一般用來存放數據庫和需要保持的數據等
實際栗子
VOLUME ["/data"]
- 這里的 /data 目錄就會在運行時自動掛載為匿名卷,任何向 /data 中寫入的信息都不會記錄進容器存儲層,從而保證了容器存儲層的無狀態化
- 容器運行時使用 docker run -v mydata:/data 可以覆蓋這個掛載設置【個人測試的時候貌似並不可以,不知道是不是姿勢不對。。】
- 必須使用雙引號,不能使用單引號
注意事項
使用基於 Windows 的容器時
掛載的目錄必須是以下之一:
- 一個不存在或空的目錄
- C 盤以外的盤
無法通過 VOLUME 掛載主機目錄
- 為了鏡像的可移植性,VOLUME 指令不支持指定主機目錄參數(像 docker run -v <主機目錄>:<容器目錄> 是可以指定主機目錄的)
- 如果要指定,還是要通過 docker run -v 來指定主機目錄哦
VOLUMN 指令后面的步驟
如果在 VOLUMN 指令后面的構建步驟更改了卷中的數據,這些數據會被丟棄
小栗子
FROM ubuntu RUN mkdir /myvol RUN echo "hello world" > /myvol/greeting VOLUME /myvol
運行容器
docker run -it -d test
沒有用 -v 掛載卷
通過 docker inspect 查看掛載卷
docker inspect 3d2f
可以看到 Volumes 空
"Volumes": { "/myvol": {} },