centos虚拟机安装及问题解决


一、 centos6.9

这篇文章的背景是我想在centos上安装docker进行学习和练习,之前安装过一台centos6.9,是带UI界面的,尝试安装docker的过程中碰到了一些问题。这里以它为例子来演示一些相关问题的解决(都是实际踩过的一些坑,最后新装了一台最小化安装的centos7,不过解决问题的思路大体相似)。

1.1 网络不通问题排查解决(后面有复盘分析)

虚拟机:centos6.9、NAT模式,目标联通互联网。

  • 网络不通问题排查解决:(后面有复盘分析)

centos虚拟机NAT模式,eth0的ip为192.168.155.254,宿主机ip192.168.155.1(且无法ping通。)

运行dhclient后成功ping通宿主机。

但还是无法ping通互联网。

编辑网络配置文件/etc/sysconfig/network-scripts/ifcfg-eth0(根据实际网卡名称修改)

目前是静态ip配置。

eth1的配置如上,把eth1配置为dhcp获取IP。配置

截屏2024-12-12 10.11.53

/etc/init.d/network restart 【重启网卡】

判断是网卡没有连接,检查虚拟机配置进行验证。

将网卡2设置为NAT模式并连接。/etc/init.d/network restart 【重启网卡】

截屏2024-12-12 10.15.31

ip配置成功,但还是无法连接互联网。

查看路由表,route -n

第二条记录的网关是0.0.0.0,最终绕到了192.168.2.1。

这里的关键是默认路由,它定义了当没有特定路由匹配时数据包的去向。在您的路由表中,默认路由的网关是 192.168.2.1,这意味着所有非本地目的地的数据包都将通过 eth0 接口发送到这个网关。

编辑eth1的配置文件,添加网关:

仍然无法ping通互联网。检查路由发现没有更新网关。「估计忘记重启网卡了!」

截屏2024-12-12 10.26.37

/etc/init.d/network restart 重启网卡。网关配置生效。

截屏2024-12-12 10.27.37

互联网成功ping通。

  • 复盘

事实上排查网络问题只要把握路由表、网卡设置两个环节即可。

我的虚拟机设置了两块网卡,对应eth0和eth1,eth0之前配置过静态ip,且在192.168.2.0/24网段,跟网关192.168.155.1/24不在一个网段,所以一开始就ping不同192.168.155.1的网关,更不可能ping通百度。

对eth1网卡进行dhcp的设置,连接网卡硬件之后重启网卡服务获得ip(NAT模式下这个ip跟宿主机ip192.168.155.1是同网段的),发现仍然无法ping通网关,查看路由表发现eth1走的是默认网关,默认最终指向192.168.2.1(这个是192.168.2.0/24的网关),所以流量出不去。

最后修改eth1的网关设置,重启网卡,路由表生效之后,成功ping通互联网。

1.2 卸载旧版Docker

首先如果系统中已经存在旧的Docker,则先卸载:

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine \
    docker-selinux 

截屏2024-12-12 10.41.30

我的虚拟机上没有需要删除的docker相关的包。

1.3 配置Docker的yum源

  • yum工具包安装

首先要安装一个yum工具。

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

截屏2024-12-12 10.42.52

系统上已经存在。

  • 配置yum源

安装成功后,执行命令,配置Docker的yum源(已更新为阿里云源):

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
截屏2024-12-12 10.44.31

sudo sed -i ‘s+download.docker.com+mirrors.aliyun.com/docker-ce+’ /etc/yum.repos.d/docker-ce.repo

命令解释:

  1. sed: 调用sed工具,它是一个流编辑器,用于对文本进行过滤和替换。
  2. -i: 选项告诉sed直接在文件中进行编辑,而不是输出到标准输出(即终端)。这会导致原文件被修改。
  3. 's+download.docker.com+mirrors.aliyun.com/docker-ce+': 这是一个sed的替换命令,它指示sed执行以下操作:
    • s: 表示替换(substitute)。
    • +: 在sed中用作分隔符,这里它替代了默认的空格分隔符,因为默认的空格在URL中会出现,使用+可以避免这种情况。
    • download.docker.com: 这是要被替换的字符串,即原始的Docker镜像源地址。
    • mirrors.aliyun.com/docker-ce: 这是替换后的字符串,即阿里云的Docker镜像源地址。
  4. /etc/yum.repos.d/docker-ce.repo: 指定了要编辑的文件路径。这个文件是Docker CE(社区版)的YUM仓库配置文件。
  • 更新yum,建立缓存
sudo yum makecache fast
  • 问题解决
  • 报错:
    Loaded plugins: fastestmirror, refresh-packagekit, security
    Loading mirror speeds from cached hostfile
    https://mirrors.aliyun.com/docker-ce/linux/centos/6/x86_64/stable/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - “The requested URL returned error: 404 Not Found”
    Trying other mirror.
    To address this issue please refer to the below knowledge base article
    https://access.redhat.com/articles/1320623
    If above article doesn’t help to resolve this issue please open a ticket with Red Hat Support.
    Error: Cannot retrieve repository metadata (repomd.xml) for repository: docker-ce-stable. Please verify its path and try again
  • 尝试解决:

检查仓库地址:确认在 /etc/yum.repos.d/docker-ce.repo 文件中配置的阿里云Docker镜像源地址是正确的。您可以访问阿里云的官方文档或镜像源页面来获取最新的镜像源地址。

​ 检查发现,docker-ce.repo文件中存在一些之前就有的yum源配置。如图。

​ 尝试将这个文件备份,然后删除,重新生执行命令生成新的配置文件。

cp -r /etc/yum.repos.d /etc/yum.repos.d/docker-ce.backfile

截屏2024-12-12 11.00.00

重新生成。

截屏2024-12-12 11.01.36

重新生成的文件仍然是旧的源。

其实上面的解决思路有问题,因为这个链接https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo下载的文件内容,就是带有版本($releasever)的,因为目前的虚拟机版本是centos6.9并且官方也不维护这个版本的yum源仓库了,所以sudo yum makecache fast的时候才会报错。

[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

能想到的最直接的两个办法:

  1. 升级操作系统:最直接的解决方案是升级到一个受支持的 CentOS 版本,如 CentOS 7 或 CentOS 8。这样可以继续获得官方的维护和更新。
  2. 寻找其他镜像源:您可以寻找其他提供 CentOS 6.9 镜像的源。例如,一些第三方可能仍然提供 CentOS 6.9 的镜像。但请注意,使用第三方源可能会带来安全风险,因为它们可能不会及时更新安全补丁。

其他的yum源也没有找到合适的。目前貌似本机的其他yum源也有些问题。

如果设置本机的yum源可以参考:

https://www.cnblogs.com/hunttown/p/18225058

但centos6.9确实是有点过时了,打算安装一个centos7版本的虚拟机。

二、 centos7

2.1 安装centos7

  • 选择创建自定虚拟机。
  • 选择linux,CentOS 7 64位
  • 选择传统BIOS

BIOS是什么?

BIOS(Basic Input/Output System,基本输入输出系统)是计算机启动时加载的第一个软件,它是一个固件程序,存储在计算机主板上的一个芯片中。BIOS的主要功能包括:

  1. 硬件初始化:在操作系统加载之前,BIOS负责对计算机的硬件组件进行初始化,包括CPU、内存、硬盘、显卡等。
  2. 启动顺序设置:BIOS允许用户设置启动设备的优先级,比如从硬盘、光盘、USB设备或网络启动。
  3. 硬件检测:在启动过程中,BIOS会检测系统中的硬件设备,确保它们正常工作。
  4. 操作系统引导:BIOS通过引导扇区(boot sector)加载操作系统的引导程序,然后将控制权交给操作系统。
  5. 系统设置:BIOS提供了一个设置界面,用户可以配置系统的各种参数,如时间、日期、启动顺序、CPU频率等。
  6. 错误报告:如果硬件初始化过程中出现问题,BIOS会通过屏幕显示错误信息,帮助用户诊断问题。

随着技术的发展,BIOS逐渐被UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)所取代。UEFI提供了更多的功能,如更大的存储空间、图形界面、安全启动等,并且支持大于2.2TB的硬盘和64位操作系统。然而,BIOS和UEFI在概念上是相似的,都是计算机启动过程中的关键组件。

安装虚拟机的时候选BIOS还是UEFI,有什么区别?

在安装虚拟机时选择BIOS或UEFI取决于操作系统需求、虚拟机软件支持及个人偏好。BIOS(基本输入输出系统)兼容性强,适合旧操作系统,但功能有限,如最大2TB硬盘和4GB内存限制。UEFI(统一可扩展固件接口)是现代标准,支持大容量硬盘、更多内存,提供安全启动和快速启动特性。若操作系统和虚拟机软件支持,且需要高级功能,UEFI是优选。然而,对于旧系统或特殊需求,BIOS可能更合适。选择前,应考虑操作系统兼容性、虚拟机软件功能及个人对配置的熟悉程度。

  • 选择新建虚拟盘
  • 点击完成
  • 存储
  • 安装镜像

虚拟机=>设置=>CD/DVD(IDE)

选择镜像并连接

选择第一项或第二项。回车。

  • 系统安装

选择语言:

继续设置

选择DATE&TIME,设置时间一般选择上海。

点击SOFTWARE SELECTION 进入环境选择,这个镜像为最小化镜像,所以只有一个选项。

点击完成后进入安装目标位置,直接点击完成

点击网络,打开,然后点击完成。

点击开始安装。

设置密码:

耐心等待安装完成。

完成后点击重启。

2.2 问题解决

登录:

ifconfig命令不存在:

2.2.1 网络连通问题解决

ip addr查看网络地址:

截屏2024-12-12 16.18.24

yum 安装net-tools

yum install net-tools

截屏2024-12-12 16.19.38

看样子是网络的问题,得先解决网络问题。

  • 解决网路连接问题

配置:目前只保留了这几项,

重启网卡:

截屏2024-12-12 16.26.36

成功获取到IP,192.168.155.34.

截屏2024-12-12 16.27.14

成功ping通互联网。

2.2.2 安装net-tools工具包

yum update报错。

截屏2024-12-12 16.28.59

图片中的错误信息表明 yum 在尝试更新时无法从 CentOS 的镜像列表中检索信息,因为无法解析 mirrorlist.centos.org 的主机名。这可能是由于网络连接问题、DNS 解析问题或 CentOS 镜像源配置问题。

后面配置完成yum源之后再安装。

2.2.3 用mac终端进行ssh连接管理

截屏2024-12-12 16.32.53

【这里提一个点,默认安装开启ssh服务,如果设置的时候用了弱口令,用nmap等扫描攻击发现ip:port之后,可以直接用hydra爆破登录,而且登录就是root用户。】

2.2.4 配置yum源

备份原始文件

cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak
  • 修改 CentOS-Base.repo 文件
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#
 
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos-vault/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
 
#released updates 
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos-vault/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos-vault/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos-vault/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
 
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos-vault/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

【后面的踩的坑,gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6改成gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7】

  • 清理更新缓存
#清空yum缓存
yum clean all

#重建yum缓存
yum makecache

#列出yum列表
yum list

2.4.5 重新安装net-tools

截屏2024-12-12 16.54.45

  • 问题解决方法:

(方法1)

这个就是安装的时候会检查key。

在repo文件中关闭即可。

vim /etc/yum.repos.d/epel.repo

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority
enabled=1
pgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

把gpgcheck=1 改为gpgcheck=0 即可,意思是在安装的时候不进行源的检查

但是并没有这个文件。

尝试新建一个文件写入相关内容。

加入这个文件之后yum update都存在问题了。

….CentOS-7的密钥是存在的,为什么会检查CentOS-6,原因是之前配置yum源的gpgkey的配置。改成CentOS-7即可。

(方法2)

# 在yum install 版本后面加上 –nogpgcheck,即可绕过GPG验证成功安装
  yum install mysql-community-server –nogpgcheck

但这个方法不长久,每次都得多加参数。

重新安装net-tools

yum install net-tools

成功之后执行ifconfig命令,成功执行。

参考:

https://b11et3un53m.feishu.cn/wiki/Rfocw7ctXij2RBkShcucLZbrn2d


文章作者: 司晓凯
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 司晓凯 !
  目录