vagrant 一款快速创建虚拟机单工具,方便本地开发环境搭建,也可以公司共享同样的环境。帮你解决了,虚拟机的网络问题,既可以和主机互通 又可以上网 (仅主机host-only网络 (让ip固定),网络地址转换(nat) (能够上网)),帮小白解决网络问题。我曾经也吃过好多的亏。
安装virtualbox
具体安装包请直接从官网下载:
安装 vagrant
vagrant 常用命令
1vagrant -v
2vagrant box list //查看目前有的box
3vagrant box add //新增一个box
4vagrant box remove //删除指定box
5vagrant init 初始化配置 vagrant file
6vagrant up 启动虚拟机
7vagrant ssh ssh登录虚拟机
8vagrant suspend 挂起虚拟机
9vagrant reload //重启虚拟机
10vagrant reload --provision //重启配置,
11vagrant halt //关闭虚拟机
12vagrant status //查看虚拟机状态
13vagrant destroy //删除虚拟机
14vagrant box add {title} {url box地址}
box 下载,添加本地box
1vagrant box add {title} {url}
2vagrant init {title}
3vagrant up
-
在box 目录下载地址
1vagrant box add ubuntu1404 ubuntutu1404.在box
2#vagrant box add {title} {url box地址}
3vagrant box list
Vagrantfile配置
-
初始化配置文件
1# 新建一个目录 2vagrant init {title} 3# 就会生成 Vagrantfile 文件
-
修改配置Vagrantfile
1//本机可以用这个ip 来访问这个虚拟机了 2config.vm.network "private_network", ip: "192.168.100.99" 3//共享目录 4config.vm.synced_folder "/Users/maozhongyu/code", "/home/www" 5 6//端口映射 虚拟机的80端口用 本机的8888端口就可以访问, 一般不用 7config.vm.network "forwarded_port", guest: 80, host: 8888 ,id: 'nginx' 8config.vm.network "forwarded_port", guest: 8888, host: 8889 ,id: 'apache' 9 10//如果同时要访问我的虚拟机的内容,那么就要配置 公有网络了。 11// vb.gui = true #可以方便排错
-
启动、连接、重启配置
1vagrant up # 启动 2vagrant ssh #连接 3vagrant reload --provision #重启配置
Vagrantfile demo
单节点
1# -*- mode: ruby -*-
2# vi: set ft=ruby :
3
4Vagrant.configure("2") do |config|
5 config.vm.box = "ubuntu22"
6 config.vm.network "private_network", ip: "192.168.56.10"
7 config.vm.synced_folder "/Users/maozhongyu/code", "/home/www"
8 config.vm.provider "virtualbox" do |vb|
9 vb.name="vagrant_ubuntu"
10 vb.cpus = 1
11 vb.memory = 2048
12 end
13end
多节点
1# -*- mode: ruby -*-
2# vi: set ft=ruby :
3
4Vagrant.configure("2") do |config|
5
6 config.vm.define "k8s-01" do |master|
7 master.vm.box = "ubuntu2204"
8 master.vm.provider "virtualbox" do |vb|
9 vb.memory = 2048
10 vb.cpus = 2
11 end
12 master.vm.network "private_network", ip: "192.168.56.80"
13 master.vm.synced_folder "/Users/mac/code", "/home/www"
14 master.ssh.insert_key = false
15 master.vm.hostname = "master"
16 end
17
18 config.vm.define "k8s-02" do |node1|
19 node1.vm.box = "ubuntu2204"
20 node1.vm.provider "virtualbox" do |vb|
21 vb.memory = 4096
22 vb.cpus = 2
23 end
24 node1.vm.network "private_network", ip: "192.168.56.81"
25 node1.vm.synced_folder "/Users/mac/code", "/home/www"
26 node1.ssh.insert_key = false
27 node1.vm.hostname = "node1"
28 end
29
30 config.vm.define "k8s-03" do |node2|
31 node2.vm.box = "ubuntu2204"
32 node2.vm.provider "virtualbox" do |vb|
33 vb.memory = 2048
34 vb.cpus = 2
35 end
36 node2.vm.network "private_network", ip: "192.168.56.82"
37 node2.vm.synced_folder "/Users/mac/code", "/home/www"
38 node2.ssh.insert_key = false
39 node2.vm.hostname = "node2"
40 end
41
42end
打包分发
打包出来,可以分享给同事,他们起来这个box 就会和你有同样的环境
1vagrant package --output xxx.box