Vagrant-基本使用
介绍
Vagrant 是一个用于构建和管理虚拟化环境的开源工具, 其为多个虚拟化平台 (本地如 VirtualBox, VMware, 云如 AWS, OpenStack) 提供统一的配置文件, 简化配置和管理过程.
安装
在 Archlinux 上可直接用 pacman
装:
1 |
|
测试
这里用 VirtualBox 简单测试 vagrant 的功能. 确保安装 virtualbox 及其依赖, 在 Archlinux 上为:
1 |
|
确保 vboxnetflt
, vboxnetadp
, vboxdrv
模块已加载:
1 |
|
若没加载, 可手动:
1 |
|
之后:
1 |
|
vagrant init hashicorp/bionic64
指定用hashicorp/bionic64
作为基础镜像, 其会在当前目录生成一个Vagrantfile
文件, 包含描述虚拟机的各种配置1
ls -a
vagrant up
会下载对应的 box 文件并启动虚拟机
之后可以用:
1 |
|
连接到虚拟机, 用 logout
退出.
删除该虚拟机可用:
1 |
|
相关概念
Vagrantfile
Vagrantfile 所在目录会被标记为 project 的根目录, vagrant 的许多配置都是相对于这个目录. 该文件也描述了 project 所需的资源, 比如要下载哪些软件.
box
在 Vagrant 中, box 是一个打包好的虚拟机镜像 (在一个公共的 box 库上拉取), 其包含一些基本配置共 Vagrant 创建和管理虚拟机.
每一个 box 都可以被当作一个基础模板, 用户可以在其之上进一步配置和定制.
注意 box_name
分两部分, 如 hashicorp/bionic64
, 前者是构建该 box 的用户名, 后者是 name. (一个 namespace 来区分不同用户上传的镜像)
拉取 box
默认从 Vagrant Cloud 拉取, 语法如:
1 |
|
如:
1 |
|
可指定版本, 如:
1 |
|
也可从自定义 URL 下载:
1 |
|
查找可用的 box
可以上 https://portal.cloud.hashicorp.com/vagrant/discover 找.
查看本地已有的 Box
1 |
|
移除本地的某个 box
1 |
|
如:
1 |
|
使用一个 box
创建一个 Vagrantfile
文件, 向其添加:
1 |
|
指定版本如:
1 |
|
指定下载链接如:
1 |
|
之后:
1 |
|
即可.
Shared dir
在:
1 |
|
启用虚拟机后, 虚拟机内的 /vagrant
目录与 Vagrantfile
所在的目录会是共享目录:
分享 vagrant 环境 (暴露虚拟机的访问)
这里的分享 vagrant 环境指远程连接用 vagrant 创建的虚拟机, 而非分享 vagrant 镜像.
使用 vagrant share
即可. 需要安装一个 Vagrant plugin:
1 |
|
可能会有部分依赖的版本冲突:
(暂不解决, 以后搞)
之后运行:
1 |
|
即可.
有三种方式:
HTTP sharing
, 创建一个 URL 供别人访问SSH sharing
, 提供vagrant connect --ssh
来连接 vagrant 环境General sharing
, 提供vagrant connect
直接连接
基本使用
Suspend VM
1 |
|
会停止 VM 并保留当前的状态, 之后可以用:
1 |
|
恢复.
Halt VM
即关机:
1 |
|
同样用:
1 |
|
重启.
Destroy VM
即销毁:
1 |
|
Vagrantfile 配置
开启 X11 转发
默认情况下 Vagrant 不启用 X11 转发, 需要在 Vagrantfile
中添加:
1 |
|
之后:
1 |
|
需要先确保安装了 xauth
和一些 X client, 进入 VM 后:
1 |
|
之后可以运行:
1 |
|
来测试.