版权声明
本文由“开发者手册”原创,如需转载,请标明出处。
基本介绍
作为一个软件开发者,总想自己搭个服务器、组个集群、整整Docker、玩玩k8s,什么?系统搞挂了.... 怎么能快速重来?
一般我们会有一台工作笔记本(宿主机),可以通过VirtualBox安装多台centos系统来搭建本地开发环境。网络要实现宿主机与虚拟机之间的互通、虚拟机与虚拟机之间的互通、虚拟机可以访问外部网络和同一局域网内的其他主机、同一局域网中的其他主机不能访问虚拟机。
系统环境
宿主机环境:macBook Pro 2015,macOS Catalina 10.15.6
VirtualBox:6.1
centos镜像版本:CentOS-7-x86_64-Minimal-1804.iso
说明:安装包在我共享的网盘里,如果需要可以+关注私信我
VirtualBox安装和基本设置
VirtualBox安装好后的主页面如下图所示
VirtualBox四种常见网络配置方案
Network Address Translation(NAT,网络地址转换模式):在NAT模式下虚拟机访问网络是通过主机提供的,虚拟机本身并不存在于网络中,虚拟机通过DHCP获得的虚拟ip通常为(10.0.2.X)。
Bridged Adapter(桥接模式):在桥接模式下,虚拟机和主机的网卡之间就像架设了一座桥,使虚拟机可以直接接入到网络中。虚拟机能被分配到一个真实IP,所有的网络功能和真机一样。
Internal(内部网络模式):在内部网络模式下,虚拟机与外网完全断开,只能实现虚拟机和虚拟机之间的网络互相访问。
Host-Only Adapter(主机模式):在主机模式下,VirtualBox会在宿主机上模拟出一张虚拟网卡(vboxnet:192.168.56.1)专门用于提供虚拟机使用。所有的虚拟机都会连接到该网卡上,虚拟机通过DHCP获得的虚拟ip通常为(192.168.56.X)。
配置本地VirtualBox网络环境
我们会采用NAT+Host-Only配置方式来实现需求。NAT模式是用于满足虚拟机外网的访问,Host-Only模式是设置固定IP使虚拟机和宿主机可以互相访问。
创建NAT网络环境
1、点击全局设定
2、选择网络->点击添加->启动网络,参数保持默认即可
创建Host-Only网络环境
1、选择网络菜单
2、点击创建按钮,会生成一个vboxnet0的网络配置,网段为:192.168.56.X,DHCP服务器可以启用也可以关闭,我这边选择关闭,因为后续会配置为固定IP。
安装centos操作系统
安装步骤
1、点击新建按钮
2、输入基本信息后点击创建按钮
3、设置磁盘大小后点击创建按钮
4、点击设置->网络来设置网卡信息
5、点击启动按钮
6、出现选择操作系统镜像页面,点击选择按钮
再点击Add按钮,在弹出框中选择本地镜像文件,最后点击choose按钮
再点击start按钮
7、此时会显示安装页面
8、选择安装语言
9、设置时区
10、选择安装路径
11、点击Begin Installation开始安装
12、设置root密码
13、点击Reboot按钮重启
14、重启后使用root用户登录系统
centos基本配置
配置网卡
输入ip addr命令查看网络信息,发现有enp0s3和enp0s8两个网卡。
enp0s3为NAT模式对应的网卡,不配置固定IP。
enp0s8为Host-Only模式对应的网卡,配置为固定IP。
设置enp0s3网卡
命令:vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
修改:ONBOOT=yes
保存退出后。
输入命令:systemctl restart network重启网络服务。
此时再通过命令:ip addr查看网络配置,发现enp0s3这张网卡被分配到ip(10.0.2.9)了:
此时外网访问应该也通了,ping www.baidu.com后结果如下:
设置enp0s8网卡:
命令:vi /etc/sysconfig/network-scrirpts/ifcfg-enp0s8
修改如下:
我这边把固定IP设置为:192.168.56.56
通过命令:systemctl restart network重启网络服务。
此时通过命令:ip addr查看,发现enp0s8网卡的固定IP也生效了。
在宿主机通过ping 192.168.56.56命令发现宿主机可以访问虚拟机了。
该虚拟机通过ping 192.168.56.1发现虚拟机也可以访问宿主机。
配置主机名
命令:hostnamectl --static set-hostname demo56
说明:设置主机名为demo56。
关闭防火墙
命令: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.
关闭SElinux
命令:setenforce 0
命令:vi /etc/selinux/config
修改:SELINUX=disabled
关闭swap和取消swap挂载
命令:swapoff -a && sysctl -w vm.swAppiness=0
结果:vm.swappiness = 0
命令:vi /etc/fstab
修改(加#号注释):#/dev/mapper/centos-swap swap swap defaults 0 0
设置localadmin用户
由于一般不直接用root用户来做操作,所以我们通过创建localadmin用户替代root用户。
以下操作在root用户下执行
创建用户组
命令:groupadd localadmin
创建用户
命令:useradd localadmin -m -s /bin/bash -d /home/localadmin -g localadmin
参数说明:
- -m:创建用户目录
- -s:指定登录shell
- -d:设置主目录
- -g:设置用户所属组
设置登录密码
命令:passwd localadmin
设置sudo权限
命令:visudo -f /etc/sudoers
新增:
localadmin ALL=(ALL) NOPASSWD: ALL
说明:
NOPASSWD: ALL 表示执行所有操作都无需验证密码
安装基础软件
在localadmin用户下执行
在线安装:
- 上传下载工具: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,安装包在我的共享网盘里有提供):
命令: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
设置docker开机启动:sudo systemctl enable docker
启动docker:sudo systemctl start docker
查看docker是否启动成功:docker -v
制作centos备份系统
通过前面的步骤,我们已经安装好了centos系统,并做了基本的配置和安装了基础软件,服务器基本可以投入使用了。但是为了不重复造轮子,我们可以通过VirtualBox把当前这个状态的系统备份下来作为基础系统,后续的虚拟机都从这个系统获取。
先关闭当前centos系统。
1、选择备份系统菜单
2、点击生成按钮
3、输入备份名称和备份描述后点击OK按钮
4、创建成功
根据备份系统创建新虚拟机
注意:做此操作时,最好保持被复制的系统处于关闭状态,以防止出现ip冲突等问题。
现在我们要基于前面备份的基础系统来创建真正投入使用的系统
1、在要被备份的虚拟机上点击复制按钮
2、填写新虚拟机的名称和存放路径
3、选择副本类型
4、选择备份类型
5、点击复制后,发现server111这台虚拟机创建成功
对新虚拟机做的配置
设置新的固定IP
我这里将IP设置为:192.168.56.111
启动server111这台虚拟机,使用root账户登录,然后执行如下命令设置IP
命令:vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
修改:
IPADDR=192.168.56.111
再执行命令:systemctl restart network 重启网络服务。
此时会发现enp0s8的ip变为了192.168.56.111
设置主机名
我这里设置为server111
命令:hostnamectl --static set-hostname server111
常见问题及解决方法
无法正确解析域名
问题起因:这个问题是由于虚拟机的DNS服务器IP地址设置不正确引起的。一般情况下,虚拟机使用的是和宿主机一样的DNS设置。如果是在公司创建的虚拟机,创建好后能上网,但是拿到家里就上不了了,这是由于DNS服务地址还没有刷新过来,导致在家上不了网。
解决办法:可以通过重启虚拟机或者手动刷新DNS缓存来解决,刷新DNS缓存命令如下:sudo systemctl restart nscd
参考资料
VirtualBox官方地址:https://www.virtualbox.org
结束语
希望我的文章能给您带来帮助,如果您有什么疑问,可以给我留言,我会在第一时间给您提供解答。如果您有好的建议或想法,也欢迎给我留言。