准备工作
- VirtualBox
- Vagrant
- CentOS 镜像
安装完成后,终端输入:vagrant -v
Vagrant
安装 CentOS
# 新建 vagrant 目录
mkdir ~/vagrant
cd ~/vagrant
# 官方镜像:在线安装
vagrant init centos/7
# 下载镜像:自定义镜像名、指定镜像路径(推荐)
# 官方:https://vagrantcloud.com/centos/boxes/7/versions/1902.01/providers/virtualbox.box
# vagrant box add <boxName> <boxFilePath>
vagrant box add centos7 ~/Downloads/centos-7.0-x86_64.box
备注:目录下会生成配置文件 —— Vagrantfile
安装插件
- vagrant-hostmanage —— 用主机名访问(虚拟机之间访问、宿主机访问虚机)
- vagrant-vbguest —— 自定义共享目录(必须,解决异常:mount: unknown filesystem type 'vboxsf')
vagrant plugin install vagrant-hostmanage
vagrant plugin install vagrant-vbguest
自定义配置
修改 Vagrantfile(在 end 之前)
config.vm.network "private_network", ip: "192.168.33.10" # 虚拟机 IP
config.vm.synced_folder "~/websvr", "/websvr" # 共享目录
# 可选
config.vm.provision "shell", path: "bootstrap.sh" # 启动时运行脚本
Vagrantfile 参数说明
config.vm.define 多台主机
config.vm.define "node1" do |node1|
end
config.vm.define "node1" do |node2|
end
config.vm.define "node1" do |node3|
end
*.vm.network 虚拟机网络
nat # 默认方式
forwarded_port # 端口转发
private network # 私有网络(仅主机模式)
public network # 公有网络(桥接模式)
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "public_network"
*.vm.hostname 定义虚机主机名
config.vm.define "node1" do |node1|
node1.vm.network "private_network", ip: "192.168.33.11"
node1.vm.network "public_network"
node1.vm.hostname = "node1"
end
访问 CentOS
# 新建共享目录
mkdir ~/websvr
vagrant up # 启动虚拟机(默认用户:vagrant)
vagrant ssh # 访问虚拟机
宿主机:ping 192.168.33.10
备注:
- 每次更改 Vagrantfile 后,需要重启虚拟机
vagrant reload
。 - 提高安全性,root 账户建议通过密钥登录。
如果出现一下报错:
Permission denied - /Users/xxx/.vagrant.d/data/machine-index/index (Errno::EACCES)
- rm -rf ~/.vagrant.d
- 启动:vagrant up
打包镜像
- 关闭虚拟机:
vagrant halt
mkdir -p backup/centos7
- 打包:
vagrant package --output backup/centos7/centos7.box --vagrantfile Vagrantfile
常用命令
vagrant -v # 查看版本
vagrant status # 查看状态
vagrant up # 启动虚拟机
vagrant ssh # 访问虚拟机
vagrant reload # 重启虚拟机
vagrant suspend # 挂起虚拟机(虚拟机内存都保存在硬盘上,启动可快速恢复)
vagrant resume # 恢复虚拟机(与挂起对应)
vagrant halt # 关闭虚拟机
vagrant destroy # 销毁虚拟机
vagrant package # 打包镜像(以后任何地方都能用)
# box
vagrant box list # 镜像列表
vagrant box add # 添加镜像
vagrant box remove # 删除镜像
网友评论