使用Vagrant創建CentOS虛擬機

使用Vagrant創建CentOS虛擬機

Vagrant是一款由HashiCorp公司提供的,用於快速構建虛擬機環境的軟件。本節我們將使用Vagrant結合Oracle VM VirtualBox快速地在win10環境下構建CentOS7虛擬機。在此之前需要先安裝好 VagrantVirtualBox

構建CentOS7虛擬機

  1. https://app.vagrantup.com/boxes/search下搜索centos:

  1. 在win10任意盤符下創建 vagrant_vm 目錄(注意目錄最好不要有中文和空格),然後在該目錄下使用cmd執行命令:
vagrant init centos/7

  1. 執行 vagrant up 啓動(這時候最好提前打開VirtualBox),然後會出現以下界面,一直等待完成後即可,在完成後,會在 VirtualBox 的列表裏會出現一臺正在運行的虛擬機:

  1. 在上面的安裝過程中我們會發現,過程非常的緩慢,我們可以用以下的方式加速:

在上面的日誌中可以找到這麼一行:

Downloading: https://vagrantcloud.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box

後面這個URL就是下載地址了,將它黏貼到迅雷等下載工具下載即可。然後將下載好後的xxx.box文件複製到 vagrant_vm 目錄下,並且重命名爲 centos7.box(刪除centos7.box之外的文件和目錄,只保留centos7.box一個文件)

接着在vagrant_vm下運行命令,導入已存在的鏡像(box文件):

vagrant box add centos/7 centos7.box

初始化box,接着執行命令:

// 注意此處的名稱和上方保持一致
vagrant init centos/7

初始化成功後執行命令啓動:

vagrant up

構建成功,效果和一開始在線下載構建是一樣的。

常見的幾個vagrant命令

- vagrant status

查看虛擬機狀態信息

- vagrant halt

關閉已經啓動的虛擬機

- vagrant up

啓動虛擬機

- vagrant suspend

暫停虛擬機,會保存暫停之前的狀態

- vagrant resume

恢復暫停之後的虛擬機

- vagrant reload

重新啓動虛擬機

- vagrant destroy

銷燬已經創建的虛擬機

- vagrant ssh

命令行的模式鏈接虛擬機

遠程工具連接虛擬機

在使用 vagrant ssh 的實際操作中發現,可能會出現如下的錯誤:

在 Google上找了很多方法,說是 private key 文件的權限問題,但是都沒有解決,後面直接使用ssh連接工具連接成功,具體的操作如下圖:

1. 先普通用戶登陸

2. 配置root用戶登陸

使用 vagrant 用戶登陸成功後,可以使用下方命令切換到root用戶

su root

// 密碼
vagrant

但是這樣還是不能直接使用root用戶登陸,需要以下的操作:

首先以默認身份登錄,切換到root用戶後,並修改 sshd 配置文件:

vim /etc/ssh/sshd_config

做如下變動

# PermitRootLogin prohibit-password
PermitRootLogin yes             # 允許 root 身份登錄
# PasswordAuthentication on
PasswordAuthentication yes      # 可以使用密碼登錄

重啓 sshd 服務

systemctl restart sshd

然後使用 vagrant reload 命令直接重啓虛擬機,這時我們就可以直接使用 root/vagrant 登陸了。

目錄共享

Vagrant的根目錄(就是我們一開始創建的vagrant_vm)和虛擬機裏的/vagrant目錄是共享的。當我們在 vagrant_vm 新建一個文件時,在虛擬機/vagrant的目錄也有同樣的內容

自定義共享

  • 共享目錄配置
config.vm.synced_folder   
   "your_folder"(必須)   //物理機目錄,可以是絕對地址或相對地址,相對地址是指相對與vagrant配置文件所在目錄
  ,"vm_folder(必須)"    // 掛載到虛擬機上的目錄地址
  ,create(boolean)--可選     //默認爲false,若配置爲true,掛載到虛擬機上的目錄若不存在則自動創建
  ,disabled(boolean):--可選   //默認爲false,若爲true,則禁用該項掛載
  ,owner(string):'www'--可選   //虛擬機系統下文件所有者(確保系統下有該用戶,否則會報錯),默認爲vagrant
  ,group(string):'www'--可選   //虛擬機系統下文件所有組( (確保系統下有該用戶組,否則會報錯),默認爲vagrant
  ,mount_options(array):["dmode=775","fmode=664"]--可選  //dmode配置目錄權限,fmode配置文件權限  默認權限777
  ,type(string):--可選     //指定文件共享方式,例如:'nfs',vagrant默認根據系統環境選擇最佳的文件共享方式
  • 安裝vbguest插件

爲防止掛載失敗,提示如下圖 because the filesystem "vboxsf" is not available 的問題,提前執行該命令安裝插件

安裝如下的插件即可解決:

vagrant plugin install vagrant-vbguest

關閉更新和下載

config.vbguest.auto_update = false #防止重新安裝更新

config.vbguest.no_remote = true #不從遠程web端下載
  • 掛載共享目錄

編輯vagrant_vm文件夾下的Vagrantfile文件:

在這行下面添加如下配置:

config.vm.synced_folder ".","/vagrant",disabled:true    # 禁用vagrant的默認共享目錄,不然有可能掛載失敗
config.vm.synced_folder "./data", "/vagrant_data", create:true, owner: "root", group: "root"

配置的意思是將當前路徑下的data文件夾和虛擬機的/vagrant_data,擁有者爲root,羣組爲root,如果路徑不存在則創建。

修改了Vagrantfile文件需要執行 vagrant reload 重啓。重啓後我們在data文件夾下新建一個 test.txt 文件,然後連接虛擬機看看是否共享成功

然後再次重啓,連接虛擬機去查看/vagrant_data目錄下是否共享成功

網絡配置

虛擬機私有網絡

在 Vagrantfile 中開啓網絡的配置信息:

然後使用命令vagrant reload重啓虛擬機,重啓後我們使用ping命令看是否可以在windows上訪問到這個ip:

連接虛擬機,使用 ip addr 查看其IP:

虛擬機公有網絡

編輯Vagrantfile,將我們剛剛開啓的私有網絡配置註釋,然後開啓下面這行配置:

然後重啓虛擬機,重啓過程中會讓你根據當前網絡環境選擇:

此處顯示我的網絡適配器的選項是 2,所以此處我輸入了 2,重啓好後連接虛擬機,查看其IP:

公有網絡和私有網絡的區別是,公有網絡是無線路由器自動分配的IP地址,並且在同一個wifi網絡下的其他設備也是可以訪問這個IP地址的。

多主機配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章