最近一直在研究docker集群,正好看到swarm,于是打算使用virtualbox 构建一个本地的虚拟机集群来学习swarm的一些操作。由于之前在virtualbox上面只搭建了一台各个功能都完备的centos虚拟机,时间过于久远,现在又重零开始搭建centos虚拟机,确实遇到一些问题,下面主要是罗列出这些问题,并给出问题的最佳解决方案,以免下次隔了很久的时间再次搭建虚拟机时又从零开始,嘤嘤~。

Network

构建网络是第一个问题,一般我们需要虚拟机能够正常上网,正常访问主机,主机也能正常的访问虚拟机。因此在虚拟机网络设置的时候我们采用桥接模式。使用桥接模式需要注意以下的几点:
第一,Windows7 不会默认安装桥接的驱动程序,所以需要自行安装
首先打开本地连接的属性选项

![本地连接](https://img-blog.csdn.net/20170511214354629?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQWxsb2NhdG9y/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

选择安装–> 服务–>添加–>从磁盘安装–>浏览
浏览的时候进入到virtualbox 的安装目录选择virtualbox–>dirvers–>network–>netlwf–>VboxNetLwf.inf
然后一路点击确定即可安装成功。
此时本地连接会多一个驱动

![本地增加](https://img-blog.csdn.net/20170511215012235?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQWxsb2NhdG9y/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

此时在virtualbox 相应虚拟机实例上选择网络即可看到可以选择桥接模式了

![桥接安装成功](https://img-blog.csdn.net/20170511215215578?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQWxsb2NhdG9y/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

change password

非常简单 root账号登录后使用passwd 命令即可.

yum install -y vim 报错

这是我这次重新安装centos7 虚拟机时遇到的最大的问题。当启动虚拟机后安装vim 出现如下错误:

![networkerror](https://img-blog.csdn.net/20170511221843723?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQWxsb2NhdG9y/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

解决这个问题,网上有很多方案,好像都是ctrl+c ctrl+v 的结果,没有任何的卵用。
最本质的问题是网络没有配置好。我们已经实现了虚拟机的桥接模式上网。但是此时ping 外网还是处于不能连接的状态。需要更改/etc/sysconfig/network-scripts/ 文件夹下的配置文件。我这个地方更改的是ifcfg-enp0s3 其他环境可能不同可以通过ls -l | grep ifcfg-* 确定自己

![netconfig](https://img-blog.csdn.net/20170512141213584?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQWxsb2NhdG9y/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

更改此文件的最后一行,将ONBOOT更改为YES

![onboot](https://img-blog.csdn.net/20170512142203342?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQWxsb2NhdG9y/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

此时发现再次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生效。
其实可以在这个配置文件中添加

DNS1=XXXXX(与主机的DNS一致)

就不用再额外去更改config文件了
还有一种情况是虚拟网卡共享设置,需要把所有的权限打开,使得桥接模式可以正常的访问网络。
重启电脑,之后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](https://img-blog.csdn.net/20170512172520147?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQWxsb2NhdG9y/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

将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之旅。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐