版權(quán)聲明
本文由“開發(fā)者手冊”原創(chuàng),如需轉(zhuǎn)載,請標明出處。
基本介紹
作為一個軟件開發(fā)者,總想自己搭個服務(wù)器、組個集群、整整Docker、玩玩k8s,什么?系統(tǒng)搞掛了.... 怎么能快速重來?
一般我們會有一臺工作筆記本(宿主機),可以通過VirtualBox安裝多臺centos系統(tǒng)來搭建本地開發(fā)環(huán)境。網(wǎng)絡(luò)要實現(xiàn)宿主機與虛擬機之間的互通、虛擬機與虛擬機之間的互通、虛擬機可以訪問外部網(wǎng)絡(luò)和同一局域網(wǎng)內(nèi)的其他主機、同一局域網(wǎng)中的其他主機不能訪問虛擬機。
系統(tǒng)環(huán)境
宿主機環(huán)境:macBook Pro 2015,macOS Catalina 10.15.6
VirtualBox:6.1
centos鏡像版本:CentOS-7-x86_64-Minimal-1804.iso
說明:安裝包在我共享的網(wǎng)盤里,如果需要可以+關(guān)注私信我
VirtualBox安裝和基本設(shè)置
VirtualBox安裝好后的主頁面如下圖所示

VirtualBox四種常見網(wǎng)絡(luò)配置方案
Network Address Translation(NAT,網(wǎng)絡(luò)地址轉(zhuǎn)換模式):在NAT模式下虛擬機訪問網(wǎng)絡(luò)是通過主機提供的,虛擬機本身并不存在于網(wǎng)絡(luò)中,虛擬機通過DHCP獲得的虛擬ip通常為(10.0.2.X)。
Bridged Adapter(橋接模式):在橋接模式下,虛擬機和主機的網(wǎng)卡之間就像架設(shè)了一座橋,使虛擬機可以直接接入到網(wǎng)絡(luò)中。虛擬機能被分配到一個真實IP,所有的網(wǎng)絡(luò)功能和真機一樣。
Internal(內(nèi)部網(wǎng)絡(luò)模式):在內(nèi)部網(wǎng)絡(luò)模式下,虛擬機與外網(wǎng)完全斷開,只能實現(xiàn)虛擬機和虛擬機之間的網(wǎng)絡(luò)互相訪問。
Host-Only Adapter(主機模式):在主機模式下,VirtualBox會在宿主機上模擬出一張?zhí)摂M網(wǎng)卡(vboxnet:192.168.56.1)專門用于提供虛擬機使用。所有的虛擬機都會連接到該網(wǎng)卡上,虛擬機通過DHCP獲得的虛擬ip通常為(192.168.56.X)。

配置本地VirtualBox網(wǎng)絡(luò)環(huán)境
我們會采用NAT+Host-Only配置方式來實現(xiàn)需求。NAT模式是用于滿足虛擬機外網(wǎng)的訪問,Host-Only模式是設(shè)置固定IP使虛擬機和宿主機可以互相訪問。
創(chuàng)建NAT網(wǎng)絡(luò)環(huán)境
1、點擊全局設(shè)定

2、選擇網(wǎng)絡(luò)->點擊添加->啟動網(wǎng)絡(luò),參數(shù)保持默認即可


創(chuàng)建Host-Only網(wǎng)絡(luò)環(huán)境
1、選擇網(wǎng)絡(luò)菜單

2、點擊創(chuàng)建按鈕,會生成一個vboxnet0的網(wǎng)絡(luò)配置,網(wǎng)段為:192.168.56.X,DHCP服務(wù)器可以啟用也可以關(guān)閉,我這邊選擇關(guān)閉,因為后續(xù)會配置為固定IP。


安裝centos操作系統(tǒng)
安裝步驟
1、點擊新建按鈕

2、輸入基本信息后點擊創(chuàng)建按鈕

3、設(shè)置磁盤大小后點擊創(chuàng)建按鈕

4、點擊設(shè)置->網(wǎng)絡(luò)來設(shè)置網(wǎng)卡信息



5、點擊啟動按鈕

6、出現(xiàn)選擇操作系統(tǒng)鏡像頁面,點擊選擇按鈕

再點擊Add按鈕,在彈出框中選擇本地鏡像文件,最后點擊choose按鈕

再點擊start按鈕

7、此時會顯示安裝頁面

8、選擇安裝語言

9、設(shè)置時區(qū)


10、選擇安裝路徑


11、點擊Begin Installation開始安裝

12、設(shè)置root密碼


13、點擊Reboot按鈕重啟

14、重啟后使用root用戶登錄系統(tǒng)

centos基本配置
配置網(wǎng)卡
輸入ip addr命令查看網(wǎng)絡(luò)信息,發(fā)現(xiàn)有enp0s3和enp0s8兩個網(wǎng)卡。

enp0s3為NAT模式對應(yīng)的網(wǎng)卡,不配置固定IP。
enp0s8為Host-Only模式對應(yīng)的網(wǎng)卡,配置為固定IP。
設(shè)置enp0s3網(wǎng)卡
命令:vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
修改:ONBOOT=yes

保存退出后。
輸入命令:systemctl restart network重啟網(wǎng)絡(luò)服務(wù)。
此時再通過命令:ip addr查看網(wǎng)絡(luò)配置,發(fā)現(xiàn)enp0s3這張網(wǎng)卡被分配到ip(10.0.2.9)了:

此時外網(wǎng)訪問應(yīng)該也通了,ping www.baidu.com后結(jié)果如下:

設(shè)置enp0s8網(wǎng)卡:
命令:vi /etc/sysconfig/network-scrirpts/ifcfg-enp0s8
修改如下:

我這邊把固定IP設(shè)置為:192.168.56.56
通過命令:systemctl restart network重啟網(wǎng)絡(luò)服務(wù)。
此時通過命令:ip addr查看,發(fā)現(xiàn)enp0s8網(wǎng)卡的固定IP也生效了。

在宿主機通過ping 192.168.56.56命令發(fā)現(xiàn)宿主機可以訪問虛擬機了。

該虛擬機通過ping 192.168.56.1發(fā)現(xiàn)虛擬機也可以訪問宿主機。

配置主機名
命令:hostnamectl --static set-hostname demo56
說明:設(shè)置主機名為demo56。
關(guān)閉防火墻
命令:systemctl stop firewalld && systemctl disable firewalld
輸出:
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
關(guān)閉SElinux
命令:setenforce 0
命令:vi /etc/selinux/config
修改:SELINUX=disabled
關(guān)閉swap和取消swap掛載
命令:swapoff -a && sysctl -w vm.swAppiness=0
結(jié)果:vm.swappiness = 0
命令:vi /etc/fstab
修改(加#號注釋):#/dev/mapper/centos-swap swap swap defaults 0 0
設(shè)置localadmin用戶
由于一般不直接用root用戶來做操作,所以我們通過創(chuàng)建localadmin用戶替代root用戶。
以下操作在root用戶下執(zhí)行
創(chuàng)建用戶組
命令:groupadd localadmin
創(chuàng)建用戶
命令:useradd localadmin -m -s /bin/bash -d /home/localadmin -g localadmin
參數(shù)說明:
- -m:創(chuàng)建用戶目錄
- -s:指定登錄shell
- -d:設(shè)置主目錄
- -g:設(shè)置用戶所屬組
設(shè)置登錄密碼
命令:passwd localadmin
設(shè)置sudo權(quán)限
命令:visudo -f /etc/sudoers
新增:
localadmin ALL=(ALL) NOPASSWD: ALL
說明:
NOPASSWD: ALL 表示執(zhí)行所有操作都無需驗證密碼
安裝基礎(chǔ)軟件
在localadmin用戶下執(zhí)行
在線安裝:
- 上傳下載工具:sudo yum -y install lrzsz
- 壓縮/解壓縮:sudo yum -y install zip unzip
- wget下載工具:sudo yum -y install wget
- lsof工具:sudo yum -y install lsof
- curl工具:sudo yum -y install curl
- net-tools工具:sudo yum -y install net-tools
- vim工具:sudo yum -y install vim
- nscd工具:sudo yum -y install nscd
安裝docker(17.03.0-ce,安裝包在我的共享網(wǎng)盤里有提供):
命令:sudo yum -y install docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm
命令:sudo yum -y install docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm
設(shè)置docker開機啟動:sudo systemctl enable docker
啟動docker:sudo systemctl start docker
查看docker是否啟動成功:docker -v
制作centos備份系統(tǒng)
通過前面的步驟,我們已經(jīng)安裝好了centos系統(tǒng),并做了基本的配置和安裝了基礎(chǔ)軟件,服務(wù)器基本可以投入使用了。但是為了不重復造輪子,我們可以通過VirtualBox把當前這個狀態(tài)的系統(tǒng)備份下來作為基礎(chǔ)系統(tǒng),后續(xù)的虛擬機都從這個系統(tǒng)獲取。
先關(guān)閉當前centos系統(tǒng)。
1、選擇備份系統(tǒng)菜單

2、點擊生成按鈕

3、輸入備份名稱和備份描述后點擊OK按鈕

4、創(chuàng)建成功

根據(jù)備份系統(tǒng)創(chuàng)建新虛擬機
注意:做此操作時,最好保持被復制的系統(tǒng)處于關(guān)閉狀態(tài),以防止出現(xiàn)ip沖突等問題。
現(xiàn)在我們要基于前面?zhèn)浞莸幕A(chǔ)系統(tǒng)來創(chuàng)建真正投入使用的系統(tǒng)
1、在要被備份的虛擬機上點擊復制按鈕

2、填寫新虛擬機的名稱和存放路徑

3、選擇副本類型

4、選擇備份類型

5、點擊復制后,發(fā)現(xiàn)server111這臺虛擬機創(chuàng)建成功

對新虛擬機做的配置
設(shè)置新的固定IP
我這里將IP設(shè)置為:192.168.56.111
啟動server111這臺虛擬機,使用root賬戶登錄,然后執(zhí)行如下命令設(shè)置IP
命令:vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
修改:
IPADDR=192.168.56.111
再執(zhí)行命令:systemctl restart network 重啟網(wǎng)絡(luò)服務(wù)。
此時會發(fā)現(xiàn)enp0s8的ip變?yōu)榱?92.168.56.111
設(shè)置主機名
我這里設(shè)置為server111
命令:hostnamectl --static set-hostname server111
常見問題及解決方法
無法正確解析域名
問題起因:這個問題是由于虛擬機的DNS服務(wù)器IP地址設(shè)置不正確引起的。一般情況下,虛擬機使用的是和宿主機一樣的DNS設(shè)置。如果是在公司創(chuàng)建的虛擬機,創(chuàng)建好后能上網(wǎng),但是拿到家里就上不了了,這是由于DNS服務(wù)地址還沒有刷新過來,導致在家上不了網(wǎng)。
解決辦法:可以通過重啟虛擬機或者手動刷新DNS緩存來解決,刷新DNS緩存命令如下:sudo systemctl restart nscd
參考資料
VirtualBox官方地址:https://www.virtualbox.org
結(jié)束語
希望我的文章能給您帶來幫助,如果您有什么疑問,可以給我留言,我會在第一時間給您提供解答。如果您有好的建議或想法,也歡迎給我留言。