You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让Vagrant虚拟机在电脑重启后持续运行?

让Vagrant虚拟机随系统重启后台自动运行的方案

绝对可以搞定!Vagrant虽然没有像Docker那样直接的-d参数,但我们有两种靠谱的方式实现「开机自动启动+后台持续运行」的需求,下面给你一步步讲清楚:

方案一:配置系统原生自动启动服务

这是最稳定的方式,适配所有主流操作系统,相当于把Vagrant虚拟机注册成系统的后台服务。

Linux(systemd 系统)

  1. 先创建一个systemd服务文件,路径比如 /etc/systemd/system/vagrant@<你的虚拟机名称>.service,把<你的虚拟机名称>替换成你实际的VM名字(比如lamp-vm)。
  2. 把以下内容写入服务文件,注意替换<你的用户名>/path/to/your/vagrant/project为你的实际信息:
[Unit]
Description=Vagrant VM: %I
After=network.target

[Service]
Type=forking
User=<你的用户名>
WorkingDirectory=/path/to/your/vagrant/project
ExecStart=/usr/bin/vagrant up
ExecStop=/usr/bin/vagrant halt
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 执行以下命令生效:
    • sudo systemctl daemon-reload
    • sudo systemctl enable vagrant@lamp-vm.service
      这样下次系统重启后,虚拟机就会自动在后台启动,你可以用vagrant status查看状态,vagrant ssh正常连接。

macOS

  1. 创建一个launchd配置文件,路径比如 ~/Library/LaunchAgents/com.yourname.vagrant.plistyourname换成你的自定义标识。
  2. 写入以下内容,替换/path/to/your/vagrant/project为你的Vagrant项目路径:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.yourname.vagrant</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/vagrant</string>
        <string>up</string>
    </array>
    <key>WorkingDirectory</key>
    <string>/path/to/your/vagrant/project</string>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>
  1. 加载并启用配置:
    • launchctl load ~/Library/LaunchAgents/com.yourname.vagrant.plist
    • launchctl start com.yourname.vagrant
      系统开机后就会自动后台启动你的VM了。

Windows

用系统自带的任务计划程序就能实现:

  1. 打开「任务计划程序」,点击「创建基本任务」。
  2. 触发器选择「计算机启动时」(如果只需要你登录时启动就选「登录时」)。
  3. 操作选择「启动程序」,程序或脚本选vagrant.exe的完整路径(比如C:\HashiCorp\Vagrant\bin\vagrant.exe),添加参数填up,起始于填你的Vagrant项目根目录。
  4. 勾选「不管用户是否登录都要运行」,并设置「使用最高权限运行」,避免权限问题。
  5. 完成配置后,下次开机虚拟机就会在后台自动启动。

方案二:使用Vagrant专用插件

如果你不想手动配置系统服务,可以用vagrant-autostart插件,它会自动帮你适配系统配置:

  1. 安装插件:
vagrant plugin install vagrant-autostart
  1. 打开你的Vagrantfile,添加以下配置(替换virtualbox为你实际用的provider,比如vmware):
Vagrant.configure("2") do |config|
  # 保留你原有的LAMP环境配置...
  config.autostart.enable = true
  config.autostart.provider = "virtualbox"
end
  1. 启用自动启动:
vagrant autostart enable

插件会自动在你的系统中配置对应的启动项,省心又省力。

不管用哪种方法,虚拟机都会像Docker容器-d参数那样后台运行,不需要每次手动执行vagrant up。如果需要停止虚拟机,直接用vagrant halt即可,系统服务方式也可以用对应的系统命令(比如Linux的sudo systemctl stop vagrant@lamp-vm.service)停止。

内容的提问来源于stack exchange,提问作者Syed Aqeel

火山引擎 最新活动