[英]Relative path not working with named volumes in the docker-compose.yml
我需要使命名卷使用執行docker-compose
命令的文件夾的相對路徑。
這是 docker-compose.yml 中的卷定義
volumes:
esdata1:
driver: local
driver_opts:
type: none
device: ./esdata1
o: bind
如果文件夾不存在,docker -compose似乎不會創建該文件夾,但即使在啟動 docker 之前創建了該文件夾,我也總是收到此錯誤:
ERROR: for esdata Cannot create container for service esdata: error while mounting volume with options: type='none' device='./esdata1' o='bind': no such file or directory
注意:這可能很愚蠢,但esdata
是使用命名卷的服務
esdata:
...
volumes:
- esdata1:/usr/share/elasticsearch/data
...
我在這里缺少什么?
也許相對路徑./
不指向執行docker-compose
的文件夾(我已經嘗試使用~/
使用相對於用戶家的文件夾,但我遇到了同樣的錯誤)。
提前致謝,
PS:如果我使用絕對路徑,它就像一個魅力
我遇到了完全相同的問題。 看來你沒有做錯什么。 這還沒有在 Docker 中實現: https : //github.com/docker/compose/issues/6343
便攜性不是很好...
如果您使用這樣的命名綁定掛載,則必須包含文件的完整路徑,例如:
volumes:
esdata1:
driver: local
driver_opts:
type: none
device: /home/username/project/esdata1
o: bind
該文件夾也必須提前存在。 這就是 linux 綁定掛載系統調用的工作方式,當您傳遞這樣的標志時,您是在直接與 Linux 對話,而無需 docker 或 compose 進行任何路徑擴展。
如果您只想從主機掛載目錄,則使用主機卷將通過 compose 擴展為相對路徑:
esdata:
...
volumes:
- ./esdata1:/usr/share/elasticsearch/data
...
雖然由於路徑自動擴展,主機卷更易於移植,但您將失去命名卷的功能,其中 docker 使用圖像內容(包括文件權限/所有權)初始化一個空的命名卷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.