在 Ubuntu 上运行 docker-machine,使用docker run -v
选项挂载本地文件夹,Docker 容器中的文件夹是空的。
答案1
看来 docker-machine 默认安装了我的/home
本地/hosthome
。
另外,使用-v
或--volume
选项docker run
与选项有区别--mount
:如果本地文件夹不存在,则自动创建。
这就是为什么在调用时docker run -v /home/a/b/c:/xxx
,首先在虚拟机内部的路径下创建一个空文件夹/home/a/b/c
,然后将其挂载到路径下的容器中/xxx
。
第一个要点是停止使用-v
option 并开始使用--mount
:docker run --mount type=bind,source=/home/a/b/c,target=/xxx
。在这种情况下,命令将快速失败由于虚拟机中不存在源路径,因此出现错误。
第二步是从虚拟机中删除默认共享文件夹(我的驱动程序是virtualbox
),并将其替换为具有匹配路径的正确文件夹。在停止的虚拟机上执行以下操作:
docker-machine stop
vboxmanage sharedfolder remove default --name hosthome
vboxmanage sharedfolder add default --name $HOME --hostpath $HOME --automount
docker-machine start