问题描述:
最近使用windows安装运行docker,在docker中进行启动程序,当我使用在linux系统的方式用-v 参数,将我windows系统中的某个文件夹与容器中文件夹相挂载时,发现不能成功
原因:
出现这个问题的原因与我之前一篇介绍在容器中启动程序后,不能通过window:port方式访问的原因差不多,可以查看 容器访问
解决办法
1.创建共享文件夹
(1)在自己的windows系统中新建一个文件夹,用于与运行docker的linux系统的文件夹相挂载
(我这里创建的路径是:D:\lwx\jenkins\docker\data)
(2)打开virtualBox,选择default,点击设置–>共享文件夹–>在固定分配下点击新进共享文件夹,输入共享文件夹路径((1)中创建的文件夹),和共享文件夹名称,这里自动挂载不选择,等会手动挂载,可以自己指定挂载目录。点击 OK。
2.在docker的宿主机Linux中进行挂载
使用命令docker-machine ssh default 进入系统中
默认是docker用户,这里需要用root用户,执行命令 sudo -i,切换至root用户
使用 cd / 进入到根目录,查看文件,这里可以自己建一个文件夹作为挂在目录,我这里建的是/mnt/share
使用命令mount -t vboxsf data /mnt/share 将刚刚新建共享文件夹的data与启动docker的系统中的/mnt/share文件挂载起来,这样两边文件会同步变化
3.启动使用
执行两次exit,退出启动docker的系统,回到windows操作,执行docker run进行启动容器,加 -v 参数,进行文件夹挂载,-v param1:param2 ,这里param1是外部文件路径(启动docker系统中,即docker的宿主机),param2是你启动的容器内部文件路径。我这里挂载到/mnt/share/test,因为前面已经将windows上的D:\lwx\jenkins\docker\data与linux系统中的/mnt/share相挂载了,所以我们修改windows上的D:\lwx\jenkins\docker\data\test文件夹就可以直接修改到容器中了。