来自流浪者文档:
vagrant halt [name|id]
假设流浪者全局状态输出如下:
id name provider state directory
------------------------------------------------
6e16e1a envname virtualbox running D:/git/envname
因此,从包含Vagrantfile
的目录之外,我应该能够用停止这台机器
vagrant halt 6e16e1a #works!
以及
vagrant halt envname #doesn't work!
错误消息:
运行此命令需要Vagrant环境或目标计算机。运行vagrant init
以创建一个新的Vagrant环境。或者,从vagrant global-status
获取目标计算机的ID以在其上运行此命令。最后一个选项是更改到包含Vagrantfile的目录,然后重试
这与在没有Vagrantfile的目录中vagrant halt
时的输出相同。
那么,我能叫个名字停下来吗?如果可以,怎么停?
Windows 10 上的Vagrant 2.2.14
流浪者档案摘录:
config.vm.hostname = "envname"
config.vm.define "envname"
我找不到一个"干净";这个问题的解决方案,所以我写了一个小bash函数来从盒子name
中获得盒子id
。
function vgid() {
BOX_NAME=$1
BOX_ID=$(vagrant global-status --prune | grep $BOX_NAME | awk '{print $1}')
echo $BOX_ID
}
使用这个功能,我现在可以在如下命令中使用盒子的名称:
vagrant up $(vgid name)
这不是我最喜欢的解决方案,但它确实有效,我更喜欢它从global-status
输出中复制粘贴ID。