Linux虚拟机管理软件vargrant

本文介绍了Linux操作系统的特点,如开源、稳定和安全性,并讲解了Linux虚拟机的概念。重点讨论了Vagrant作为自动化部署工具的作用,包括其工作原理、安装配置以及如何使用Vagrant创建和管理CentOS虚拟机。此外,还提到了自定义虚拟机box的方法,展示了如何将预配置的环境打包分享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 什么是Linux

Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。

1.1 Linux特点

1.Linux不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux不仅仅是被网络运维人员当作服务器使用,甚至当作网络防火墙,这是Linux的一大亮点。
2.Linux具有开放源码、没有版权、技术社区用户多等特点,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。尤其系统中内嵌网络协议栈,经过适当的配置就可实现路由器的功能。这些特点使得Linux成为开发路由交换设备的理想开发平台。

1.2 Linux基本思想

Linux的基本思想有两点:第一,一切都是文件;第二,每个文件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。

1.3 什么是Linux虚拟机

提到Linux,就会用到Linux虚拟机,那什么是Linux虚拟机呢?一般来说,在开发时Linux虚拟机都是安装到Window系统下的,虚拟机是独立于Window的一个完整的操作系统。它和Window一样,有CPU、内存、IP地址等等。在Linux虚拟机里面可以安装IDEA、Eclipse等开发工具(它们的运行环境都是Linux版本的jdk和其他Linux开发环境)。Window和Linux文件可以共享和进行共同开发。

2 Linux被用在那些地方

1.桌面应用
linux在桌面场景下应用不多,这个场景下一般还是使用windows
2.服务端(后端)
电商,门户网站后端服务,一般采用linux作为操作系统,java,c++,python,go,运行和部署在linux服务。
3.嵌入式
linux最小和最核心的版本只有几百K,智能物联设备方便嵌入式开发。
4.云计算
运维和部署场景,使用linux。

3 Linux如何去使用

1 agrant 是一个非常好用的工具,可以用它来在单台物理机器编程管理多个虚拟机(vms)。其支持原生VirtualBox,并同时提供了对VMware Fusion、Amazon EC2虚拟机集群的插件支持。
2 vagrant提供了极易使用、基于Ruby的内部DSL,允许用户使用它们的配置参数定义一个或多个虚拟机。另外,对于自动部署,vagrant支持多种机制:可以使用puppet,chef或者用于在vagrant配置文件中定义的所有虚拟机上自动安装软件程序和配置的shell脚本等。
3 vargrant和vmware相比优点在于,vargrant可以一次创建多个虚拟机,且可以自己定制box供多人使用。vmware一次只能创建一个虚拟机。

3.1 Vargrant

3.1.2 什么是Vagrant

1.Vagrant是一个比较流行的虚拟机管理软件,使用Vagrant 可以让我们用命令直接从云上下载虚拟机的镜像,然后进行创建和管理等,Vagrant集成了主流的虚拟机管理工具vmvare 和 Virtualbox,默认使用Virtualbox。
2.Vagrant 的精髓在一个 Vagrantfile 里面,和 Docker 的 Dockerfile 功能上一样。我们只需要把需要安装部署的步骤写在 Vagrantfile 里面,便可以实现轻松部署。Vagrant 还支持把当前系统做成一个.box 后缀命名的镜像,类似 Docker 的 image,可轻松实现环境的移植。
3.Vagrant 可以把配置好的环境打包成一个box,分享给其他人直接使用。
4.在容器流行之前,Vagrant 就是用来编排虚机和自动部署开发环境的,有了 Docker/Kubernetes 之后,直接用容器来编排应用确实更简单。但是还有一些工作,例如容器平台自身的安装,多节点集群的部署测试等,更方便用虚拟机解决。
5.补充一点,前面讲到什么是Linux虚拟机和centos.box,那么Linux虚拟机和box有什么关系呢?
简单的书说,不同的box可以产生不同的Linux虚拟机,你的box里面是Java和MySQL的环境,那么box产生的就是包含Java和MySQL的Linux虚拟机。二者是类和对象的关系。

3.1.3 vargrant主要工作原理

在这里插入图片描述
1 首先你需要先初始化vargrantfile文件,这个文件里面包含了你需要的配置,CPU、内存、网卡等,还有你所需环境等,例如Java、MySQL等。
2 这个配置文件会将这些配置信息发给云服务器仓库,云服务器仓库返回信息,这时可以从云服务器仓库下载你所需的配置信息的box。
3 这个下载完的box可以一键导入到本地。
4 这个box可以自己使用或者发给共同开发人员,这样其他人就不需要在重新配置下载了,这样极大方便了开发。

3.2 vargrant安装及配置

3.2.1 安装Virtualbox

VirtualBox 是一个免费开源的虚拟机,相对 VMware 来说更加小巧,个人比较喜欢。虽然 Vagrant 也支持 VMware,不过 VMware 是收费的,对应的 Vagrant 版本也是收费的。下载地址https://www.virtualbox.org/wiki/Downloads

3.2.2 安装目录及配置

1 推荐安装在D盘
2 配置
在这里插入图片描述

3.2.3 安装vargrant

1 https://www.vagrantup.com/downloads下载最新版Vagrant,注意Vagrant没有图形界面,所以安装后也没有桌面快捷方式。
2 推荐安装在D盘。

3.2.4 配置

在这里插入图片描述

3.3 安装centos虚拟机

3.3.1 下载box

可以在 http://www.vagrantbox.es/ 这里下载更多不同系统甚至是已经配置好环境直接可以用的box,虽然可以直接在Vagrant直接使用网址,由Vagrant自动下载安装,但是考虑到网络情况,还是建议自行先下载好。

3.3.2 初始化文件

1 新建文件夹,目录中不能能有中文。
2 用cmd打发DOS窗口。
3 在DOS窗口中用cd命令进入刚刚新建的文件里面的目录。
4 在DOS窗口中执行命令vagrant init centos,产生配置文件。
5 修改配置文件,改成自己所需内存、网卡等等配置信息。
6 例子如下:
下面展示一些 内联代码片

// A code block
var foo = 'bar';
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  (1..3).each do |i|
    config.vm.define vm_name = "s#{i}"  do |config|
        config.vm.provider "virtualbox" do |v|
            v.customize ["modifyvm", :id, "--name", vm_name]
	    v.customize ["modifyvm", :id, "--memory", "8192"]
            v.customize ["modifyvm", :id, "--cpus", "2"]
        end
        config.vm.box = "centos_v1"
        config.vm.hostname =vm_name
        config.ssh.username = "root"
        config.ssh.password = "vagrant"
							#		config.ssh.shell = "powershell"
							#config.ssh.shell = "bash -l"
        config.vm.network :private_network, ip: "192.168.56.7#{i}"
	config.vm.provision :shell, :path => "bootstrap.sh"
    end
  end
end

截图如下:
在这里插入图片描述

7 配置bootstrap.sh

#!/usr/bin/env bash

# The output of all these installation steps is noisy. With this utility
# the progress report is nice and concise.

echo "Update /etc/hosts"
cat > /etc/hosts <<EOF
127.0.0.1       localhost

192.168.56.71 s1
192.168.56.72 s2
192.168.56.73 s2
EOF

echo "Disable iptables"
setenforce 0 >/dev/null 2>&1 && iptables -F

### Set env ###
echo "export LC_ALL=en_US.UTF-8"  >>  /etc/profile
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

截图如下:
在这里插入图片描述

3.3.3 准备box

1 用vargrant boxl ist命令查看本地box。
2 将本地box添加到vargrant中

F:\java\virtual\s13>vagrant box add centos_v1 ./centos_v1.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos_v1' (v0) for provider:
    box: Unpacking necessary files from: file://F:/java/virtual/s13/vagrant-centos-7.2.box
    box:
==> box: Successfully added box 'centos_v1' (v0) for 'virtualbox'!

3.3.4 安装虚拟机

1 用vargrant up安装虚拟机。
2 用MobaXterm软件连接刚才装的虚拟机。

3.3.5 常用命令

#启动Vagrantfile(s1,s2,s3)配置所有虚拟
vagrant up

#启动具体一个虚拟机
vagrant up s1

vagrant halt #关闭所有

vagrant halt s1

3.4 自定义box

安装了java开发环境
● JDK
● Mysql
● redis
● Elasticsearch
● RocketMQ
● mion
● …
能不能把已安装的虚拟机打包成一个自定义的box,分我们分享管理我们的虚拟机?

3.5 简单的自定义box实例

1 标准的虚拟机box没有vim,在虚拟机里面用命令yum install vim -y安装有vim命令的box。
2 打包当前虚拟机,产生一个自定制的box

#关闭虚拟机
vagrant halt s1
#打包当前虚拟机
vagrant package --base s1 --output centos_v2.box


3 删除现有虚拟机

vagrant halt
vagrant destroy # 删除所有的虚拟机
vagrant destroy s1 #删除s1

4 把centos_v2添加到vagrant中

#列表
F:\java\virtual\s13>vagrant box list
centos_v1 (virtualbox, 0)

#添加
F:\java\virtual\s13>vagrant box add centos_v2 ./centos_v2.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos_v2' (v0) for provider:
    box: Unpacking necessary files from: file://F:/java/virtual/s13/centos_v2.box
    box:
==> box: Successfully added box 'centos_v2' (v0) for 'virtualbox'!

#列表
F:\java\virtual\s13>vagrant box list
centos_v1 (virtualbox, 0)
centos_v2 (virtualbox, 0)

5 修改Vagrantfile,设置box使用centos_v2

在这里插入图片描述
6 使用vargrannt up命令安装了vim的box安装新的虚拟机。
7 进入虚拟机查看vim,已经安装好了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值