尽管可以非常轻松的启动一台虚拟机,但很少有人希望通过 SSH 使用基于终端的编辑器来编辑文件。幸运的是,借助 Vagrant 你不需要这样做。通过使用同步目录,Vagrant 会自动同步 guest 机器上的文件。
默认情况下,Vagrant 将你的项目的目录(即 Vagrantfile 的目录)共享到 guest 中的 /vagrant
目录。
注意,当使用 vagrant ssh
目录进入机器时,默认进入 /home/vagrant
目录。/home/vagrant
是与同步的 /vagrant
目录不同的目录。
如果终端报错,提示不兼容 guest additions(或没有 guest additions),那么可能需要更新 box 或选择不同的 box,如 hashicorp/precise64
。一些用户成功使用了 vagrant-vbguest 插件,但它并未得到 Vagrant 核心团队的正式支持。
再次运行 vagrant up
启动 vagrant,然后通过 vagrant ssh
进入机器:
$ vagrant up
...
$ vagrant ssh
...
vagrant@precise64:~$ ls /vagrant
Vagrantfile
不管你信不信,你在虚拟机中看到的 Vagrantfile 文件实际上是你宿主机上的同一个文件。下面证明一下:
vagrant@precise64:~$ touch /vagrant/foo
vagrant@precise64:~$ exit
$ ls
foo Vagrantfile
现在,“foo”文件会出现在你的宿主机上。你可以看到,Vagrant 保证了这个目录的同步。
通过同步目录,你可以继续使用宿主机上你自己的编辑器,对宿主机中文件的改动会自动同步到 guest 机器中。