vagrant(四):共享目录

本文介绍了Vagrant的共享目录功能,允许在宿主机和虚拟机间同步文件,便于开发与运行。默认共享目录为/vagrant,在宿主机对应项目根目录。配置synced_folder方法可自定义共享路径,并通过`vagrant up`查看同步效果。同时,文章讨论了不同类型的共享目录,如NFS、RSync和SMB,以及如何通过mount_options设置所有者和组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

共享目录

共享目录可以设置Vagrant在宿主机(host)和虚拟机(guest)之间同步文件,这样做的好处是可以在宿主机上开发,在虚拟机上运行。
vagrant默认的共享目录在宿主机上是和Vagrantfile文件同路径下的/vagrant文件夹,在虚拟机上是/home/vagrant目录。如果要共享其他的文件夹,还是在Vagrantfile中进行配置,例如:

Vagrant.configure("2") do |config|
  # other config here

  config.vm.synced_folder "src/", "/srv/website"
end

config.vm.synced_folder方法用来配置共享文件夹, 第一个参数是宿主机的路径,如果是相对路径,那么默认是在项目根目录下,第二个参数是虚拟机上的路径,这个路径参数必须是绝对路径。在虚拟机中将会根据这里的设置,在系统中创建共享文件夹。
在用 vagrant up 启动虚拟机的时候,显示的提示信息里,可以找到电脑与虚拟机对应的同步目录。

==> default: Mounting shared folders...
    default: /vagrant => /Users/dl/vagrant/xnat-project

上面显示,/vagrant 是虚拟机上的目录,对应的同步目录是电脑上的 /Users/dl/也就是你把要共享的文件放到项目的目录里面,在虚拟机上的 /vagrant 这里可以看到,你可以直接在虚拟机上修改在这个目录下面的文件,这样在你电脑上,也可以看到修改以后的结果,反过来也是一样的。

在用 vagrant up 启动虚拟机的时候,显示的提示信息里,可以找到电脑与虚拟机对应的同步目录。

==> default: Mounting shared folders...
    default: /vagrant => /Users/dl/vagrant/xnat

上面显示,/vagrant 是虚拟机上的目录,对应的同步目录是host上的 /Users/dl/vagrant/xnat这个目录。
默认情况下,Vagrant将共享文件夹创建在ssh用户所在的用户/组(vagrant用户)中并和其他root路径下的父文件夹一同加载。有时最好将目录挂载到不同的用户和组。比如挂载到root,就可以这样设置:

config.vm.synced_folder "src/", "/srv/website",owner: "root", group: "root"

注意:mount_options 中定义的所有者和组 ID 将优先于其他所有者和组选项。

例如,给出以下配置:

挂载的同步目录将由 ID 为 1234 的用户和 ID 为 1234 的组拥有。owner 和 group 选项将被忽略。

synced_folder 参数

synced_folder方法可以配置的参数如下:

  • create (boolean) -如果设置为true,那么当宿主机上的文件夹不存在则创建,默认为false。
  • disabled (boolean) - 如果设置为true, 共享目录失效,这个参数可以用来修改共享目录,将之前定义的目录取消。
  • group (string) - SSH用户组的共享目录设置。
  • mount_options (array) - 其他一些可以传递给mount命令来加载的文件夹。
  • owner (string) - 指定共享目录属于哪个用户。默认是SSH用户。
  • type (string) - 指定共享目录的文件格式类型。一般情况下vagrant会自动设置最佳的文件格式,也可以通过该功能自定义。
  • id (string) - 共享目录在虚拟机上的加载名称。

共享目录类型

vagrant的共享目录类型有:

  • NFS (适用于Mac OS宿主机):
    config.vm.synced_folder "/hostPath", "/guestPath", type: "nfs"
  • RSync :
    config.vm.synced_folder "/hostPath", "/guestPath", type: "rsync"
  • SMB (适用于Windows宿主机):
    config.vm.synced_folder "/hostPath", "/guestPath", type: "smb"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值