1. 程式人生 > >VirtualBox 初次安裝centos7 虛擬機器的注意事項

VirtualBox 初次安裝centos7 虛擬機器的注意事項

最近一直在研究docker叢集,正好看到swarm,於是打算使用virtualbox 構建一個本地的虛擬機器叢集來學習swarm的一些操作。由於之前在virtualbox上面只搭建了一臺各個功能都完備的centos虛擬機器,時間過於久遠,現在又重零開始搭建centos虛擬機器,確實遇到一些問題,下面主要是羅列出這些問題,並給出問題的最佳解決方案,以免下次隔了很久的時間再次搭建虛擬機器時又從零開始,嚶嚶~。

Network

構建網路是第一個問題,一般我們需要虛擬機器能夠正常上網,正常訪問主機,主機也能正常的訪問虛擬機器。因此在虛擬機器網路設定的時候我們採用橋接模式。使用橋接模式需要注意以下的幾點:
第一,Windows7 不會預設安裝橋接的驅動程式,所以需要自行安裝
首先開啟本地連線的屬性選項

本地連線

選擇安裝–> 服務–>新增–>從磁碟安裝–>瀏覽
瀏覽的時候進入到virtualbox 的安裝目錄選擇virtualbox–>dirvers–>network–>netlwf–>VboxNetLwf.inf
然後一路點選確定即可安裝成功。
此時本地連線會多一個驅動

本地增加

此時在virtualbox 相應虛擬機器例項上選擇網路即可看到可以選擇橋接模式了

橋接安裝成功

change password

非常簡單 root賬號登入後使用passwd 命令即可.

yum install -y vim 報錯

這是我這次重新安裝centos7 虛擬機器時遇到的最大的問題。當啟動虛擬機器後安裝vim 出現如下錯誤:

networkerror

解決這個問題,網上有很多方案,好像都是ctrl+c ctrl+v 的結果,沒有任何的卵用。
最本質的問題是網路沒有配置好。我們已經實現了虛擬機器的橋接模式上網。但是此時ping 外網還是處於不能連線的狀態。需要更改/etc/sysconfig/network-scripts/

資料夾下的配置檔案。我這個地方更改的是ifcfg-enp0s3 其他環境可能不同可以通過ls -l | grep ifcfg-* 確定自己

netconfig

更改此檔案的最後一行,將ONBOOT更改為YES

onboot

此時發現再次ping能夠ping通。ping 能夠成功的連結到外部的網路,但是依然出現yum install -y vim 等安裝失敗的問題。
需要更改DNS
vi /etc/resolv.conf
更換兩組DNS 的nameserver 地址即可

nameserver 8.8.8.8
nameserver 8.8.4.4

上面的DNS配置方式不一定生效,特別是在使用靜態IP的時候,此時還是需要在
ifcfg-enp0s3 檔案下新增

DNS1=8.8.8.8
DNS2=8.8.4.4

重啟網路服務保證DNS生效。
還有一種情況是虛擬網絡卡共享設定,需要把所有的許可權開啟,使得橋接模式可以正常的訪問網路。
重啟電腦,之後yum install -y XXX 就能夠成功安裝軟體。

ifconfig 命令不存在

主要是沒有安裝net-tools.x86_64 這個工具包
使用yum install -y net-tools.x86_64 即可完成。

固定虛擬機器IP地址

virtualbox 下使用DHCP的方式給虛擬機器分配IP,每次啟動虛擬機器會導致IP地址隨機的分配,這是使用者不想看到的,希望通過某種方式實現虛擬機器的IP地址的固定。下面在橋接模式下實現虛擬機器的網路IP地址的固定。其中IP地址的更改,閘道器以及子網掩碼更改與宿主機網路一致即可。
修改/etc/sysconfig/network-scripts/ifcfg-enp0s3

ipchange

將DHCP的方式更改為static同時新增上ip地址,子網掩碼以及閘道器
完成DNS配置,修改/etc/resolv.conf 新增nameserver 其中IP地址對應上圖中的閘道器(GATEWAY)

nameserver 192.168.1.253

最後重啟網路systemctl restart network
可以看到該虛擬機器ip已經改成自己配置的IP地址(可能中間需要重啟虛擬機器)。
這種方式會導致實際物理機器無法訪問虛擬機器。因為用的IP為內網IP。

安裝 ftp

有時候需要傳輸檔案,所以需要安裝ftp

yum install -y vsftpd

即可安裝,然後需要更改一些配置檔案。
首先是/etc/vsftpd/ftpusers
裡面是禁止ftp登陸的賬號,由於自己試驗時基本用root賬戶作業系統,而這個檔案裡面也羅列了root賬戶,所以註釋掉root賬戶儲存退出
其次是/etc/vsftpd/vsftpd.conf檔案
需要將userlist_enable=NO 配置的YES改為NO,因為這個配置為yes時同目錄下user_list檔案也生效,其中的root也會被禁止登陸.
最後systemctl enable vsftpd.service
systemctl start vsftpd.service 即可生效。

關閉防火牆以及selinux

關閉防火牆
首先永久關閉
systemctl disable firewalld.service
然後關閉當前防火牆
systemctl stop firewalld.service
關閉selinux
首先檢視selinux狀態
sestatus -v 可以看到SELinux status enabled (預設)
修改/etc/selinux/configSELINUX=enforcing 改為 SELINUX=disabled
然後重啟虛擬機器即可.
注:以上兩個安全服務的永久關閉只是適用於自己試驗的環境下方便虛擬機器暢通訪問,實際生產環境不應該這麼做.

更改hostname

每一次遠端登入如果使用virtualbox給主機預設的命名,那麼在操作叢集的時候容器出現虛擬機器名字混淆的情況,各種不便,因此需要永久的更改虛擬機器例項的名稱
使用指令hostnamectl set-hostname <hostname> 實現更改,然後重啟即可。

安裝執行docker daemon

centos7 預設源中可以直接安裝docker所以使用yum install -y docker 可以完成docker 的安裝。然後後臺啟動docker 即可

systemctl start docker
systemctl enable docker

安裝Swarm

使用如下指令

docker pull swarm

獲取swarm映象,由此開啟swarm之旅。