vagrant 使用 alpha

本文介绍了Vagrant的用途,将其与Docker进行对比,并详细阐述了Vagrant的使用过程,包括创建虚拟机、Vagrantfile、Boxes、启动、状态检查、SSH连接、文件系统共享和基础网络配置等,旨在帮助开发者和运维人员更好地理解和运用Vagrant。
摘要由CSDN通过智能技术生成

vagrant 创建和应用

合理的交流和沟通 才能促进技术和思想的进步 不排斥任何一个提问和质疑 
心存好奇 多思多疑
一路走来 谁无沉起

为啥要用vagrant

Vagrant是完全建立在虚拟环境上的沙箱环境,提高开发和生产环境的一致性,能够有效打击那些“在我的电脑上运行完全正常”的借口行为,同时引入一次性电脑资源消耗思想(创建Vagrantfile文件后团队的成员相互之间分享,大家就是都运行在同一个系统环境下,用后直接的销毁,下次需要的时候再启动,同样的Vagrantfile文件环境不会发生变化)无论是对于开发还是运维都能提供很多的便利,省去服务器之间来回的切换时间,节约更多的时间去打游戏

Vagrant vs. Docker

Vagrant是在不同操作系统之间提供一致性的开发环境,Docker是在拥有容器化的系统上运行的一致性容器管理工具。

容器一般比虚拟机更轻量型,无论开启,停止容器都极快。Docker使用系统自带的的容器化功能。同时Docker对系统支持不足(比如BSD),因为它必须使用主机的内核来运行容器,不能运行不同于本机的内核。Vagrant 却可以让你很好的运行window的开发环境,无论你用的是Mac还是Linux系统。

对于现在的微服务的天下,Docker能轻松快速的启动很多的容器特性相较于Vagrant更有吸引力。不过Vagrant只要用docker的provider也可以轻松的做到这点。

无论是Vagrant还是Docker都有一个不同的社区库“boxes”或“images”让技术人员选择

Vagrant使用

对于安装Vagrant就不多赘述了,我使用的测试机器是ubuntu系统,安装Vagrant之前先安装VirtualBox,键入安装命令猛击回车键等待结果,然后同样的操作安装Vagrant,敲击命令的时候姿势要准,下手要狠。一定要让隔壁的邻居能够听到你的努力声音,给人一种你不可以超越的假象。安装成功后下面开始使用,敲击命令测试软件时候安装成功如下:

$ vagrant --version
Vagrant 2.2.10

Vagrant的处女机器

先创建一个文件夹vagrant进入文件,然后可以从两个简单的命令开始,这个命令会调用Vagrant服务下载文件大约是300M需要花费一点时间,不过不用担心第一次的时候总是因为不够熟练话费很多的时间在探索,后面这个下载的文件可以重复使用,第一命令如下:

$ vagrant init ubuntu/trusty64
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
### 因为我的机器上已经有了ubuntu/trusty64 这个box所以不会重复下载如果没有的话会联网下载 下载的时间根据个人的网络来定 大概展示不变

当实例化结束后会在这个文件夹中创建一个Vagrantfile文件然后运行下面命令,输出如下内容:

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/trusty64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/trusty64' version '20190514.0.0' is up to date...
...

当命令运行结束,一个独立的全功能的Ubuntu 14.04.6 LTS系统将在后台运行,然后运行下面的ssh命令进入系统,然后你就可以做你任意想做的事情了,就这样简单:

$ vagrant ssh

Vagrant 创建的Vagrantfile文件

首先用你喜欢编辑软件打开Vagrantfile文件,下面是基础的Vagrantfile文件:

Vagrant::Config.run do |config| =>1  
config.vm.box = "precise64" =>2
config.vm.share_folder "v-root", "/vagrant", "." =>3
config.vm.provision "shell" do |s| =>4
s.path = "script.sh" 
  end 
end =>5
  • 第一行的代码块中 |config| 是告诉配置文件可以设置在 |config| 变量之上
  • 第二行是给 config.vm.box using simple variable 赋值
  • 第三行不是简单的给变量赋值,share_folder是一个有三个参数的函数
  • 也是一个函数调用,这次是provision函数,这里又一次的调用了do 和 end ,这种在配置中的模式会在整个vagarnt配置文件中用
  • 最后关闭第一行打开的配置模块

Boxes

在添加的 Vagrantfile中, Vagrant在启动虚拟机之前需要一个东西: box,要建立一个虚拟机需要一个基础的image然后克隆它快速的创建一个可用的虚拟机,在vagrant中这个image叫做box。Boxes包含一个已经安装的操作系统,通常这个文件比较大从几百兆到几千兆不等,幸运的是box只要下载一次,vagrant会保存下载的box文件以备未来需要的时候使用。下载box要在Vagrantfile中的 config.vm.box 指定系统我这里用的是
”ubuntu/trusty64“,相关的Vagrantfile文件类似下面:

Vagrant::Config.run do |config|
config.vm.box = "ubuntu/trusty64"
end

config.vm.box指定的就是box的名称,这个名称对应的是要在box中安装的系统版本

Up

当咱的配置文件写好了之后,是时候展示真的技术看看效果怎么样了,输入下面的简单命令vagrnat up就可以完成启动。输出的信息大致如下:

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/trusty64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/trusty64' version '20190514.0.0' is up to date...
==> default: Setting the name of the VM: ubuntu_test_default_1604233644875_8574
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: 
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default: 
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine,
    ...

输出的结果会展示你的创建的vagrant实例的具体信息,就不一一的解释了,要不就会导致细节过于详尽陷入一种啰嗦的尴尬

查看Vagrant Machine的状态

由于Vagrant在虚拟机上运行是没有UI界面的,所以很多的时候我们可能会忘记当前环境的运行状态(比如:虚拟机是否被创建啊,有没有在全力冲刺的跑啊…),而vagrant status就是为了解决这个问题应运而生的:

$ vagrant status
Current machine states:

default                   running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.

看到running对于知道26个字母的我们来说就晓得这个是正在运行的状态,下面的注释还进一步提示了要想停止运行的话使用vagrant halt,强制关闭当前机器agrant suspend,关闭之后我们可以使用vagrant up再启动。简单,直率

SSH

一般我们都是用ssh协议来进入机器,Vagrant本身就包含了vagrant ssh 用来处理连接和授权:

$ vagrant ssh
* Documentation:  https://help.ubuntu.com/
  
  System information as of Sun Nov  1 12:27:46 UTC 2020

连接到机器后,就可以做任何你想做的事情,如果你把这个虚拟机玩坏了,可以重新创建它,后面会说。耐心点读

Shared Filesystem(文件系统分享)

Vagrant支持客户机与宿主机之间共享和同步文件系统,文件系统的共享有很多的优点。

  • 对于使用Vagrant的,文件共享能够让使用者用自己熟悉的编辑器来操刀文件
  • 文件共享能够让你的文件储存在本地,不会因为自己将虚拟机销毁的时候数据丢失,下次在vagrant up启动的时候可以二次挂载
  • 文件共享还能起到备份的作用
$ tree
├── ubuntu18.04
│   └── Vagrantfile
 $ cd ubuntu18.04 ; ls 
  Vagrantfile

进入文件夹后重写Vagrantfile

Vagrant::Config.run do |config| 
  #...
  config.vm.share_folder "v-root", "/foo", "."
 end
  • v-root 指定要共享文件夹标识符,Vagrant 设置默认标识符就会被重写
  • /foo 是存在客户机中的文件夹,启动的时候如果没有会自动创建,如果存在会用新分享的文件内容覆盖
  • "."宿主机要分享的文件的路径,可以绝对路径或相对路径

Basic Networking(基础网络)

˙这个是和共享文件同样重要的东东,Vagrant会自动的给你创建的虚拟机配置一个网络,要不怎么和虚拟机沟通那。网络功能对于web项目比较重要,对于web项目开发人员配置好了网络设置才能用浏览器访问到自己的项目,要不就会很奇怪,找不到入口,对于新手来说迷路很正常,所以这个要慎重点看。
所有的网络配置都可以概括为入口和出口,在vagrant这配置大概如下:

Vagrant::Config.run do |config| 
#...
 config.vm.forward_port 80, 8080
end

Vagrant 会直接的指定客户机的 80端口到宿主机的8080端口 ,然后运行vagrant reload命令重新加载配置

$ vagrant reload
==> default: Attempting graceful shutdown of VM...
==> default: Checking if box 'centos/7' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 80 (guest) => 8080 (host) (adapter 1)
    ...

Suspend

会保存当前机器的运行状态然后停止它,后面可以从停止状态恢复,这个操作和虚拟机的快照功能很相似,不晓得快照功能的可以参考VMware虚拟机
这个暂停的好处可以快速的恢复机器的运行状态,通常不会超过5到10秒,时间的长短依赖你自己电脑的配置而定,我觉得男人的可以不必要追求块,持久的更招女孩子喜欢。
暂停功能会占用一些磁盘空间,一般会咱用2G以上,因为它需要更多的磁盘空间来存储机器的RAM,这样才能恢复到它的合理状态,不保存内存空间怎么会知道前面在内存中操作了啥。所以一个1G内存的机器就需要用1G的磁盘来保存。

$ vagrant suspend
==> default: Saving VM state and suspending execution...
$ vagrant statusCurrent 
machine states:

default                   saved (virtualbox)

To resume this VM, simply run `vagrant up`.

然后可以用vagrant up命令重新启动

Halt

Halt命令就像是我们给自己的物理机器直接的按关机键

$ vagrant halt
[default] Attempting graceful shutdown of VM...
$ vagrant status
Current machine states:
default poweroff (virtualbox)
The VM is powered off. To restart the VM, simply run `vagrant up`

PS:讲个我心中的疑问===>前几天在弘阳广场旁边的十字路口经过的时候,看到地上有一坨便便💩,我停住车子看了半天也没有想通,怎么会有人在十字路的斑马线上拉屎,而且还喷这么多,重要的是我用肉眼搜寻了周围好几十平方米居然都没有看到纸,是她没擦还是擦完带走了?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值