在 VirtualBox 中安装 CentOS 7 Linux 虚拟机

CompTIABeginner
立即练习

介绍

在本实验中,你将学习如何搭建和配置 CentOS 7 环境。虽然传统方法可能会在 VirtualBox 中使用完整的虚拟机,但本实验采用了一种更现代、更高效的方法——使用 Docker 容器。你将在云端环境中部署一个轻量级、隔离的 CentOS 7 容器,在无需承担传统虚拟机开销的情况下,获得一个功能完备的 Linux 系统。

整个流程从从 Docker Hub 仓库拉取官方 CentOS 7 镜像开始。接着,你将基于该镜像创建并配置一个新的容器。最后,你将通过安装 GNOME 桌面环境并启用图形化登录来定制运行中的系统,最终得到一个拥有图形用户界面的、完全可运行的 CentOS 7 实例。

下载并安装 VirtualBox 和 CentOS 7 ISO

在这一步中,我们将通过获取 CentOS 7 系统来准备环境。原始练习使用 VirtualBox 安装完整的虚拟机。然而,在这个云端实验环境中,使用 Docker 容器是一种更高效、更现代的方法。Docker 允许我们在被称为「容器」的轻量级环境中运行隔离的应用程序和操作系统,其启动速度比传统虚拟机快得多,且占用资源更少。

我们将首先从 Docker Hub(一个容器镜像的公共仓库)下载(在 Docker 术语中称为「拉取」)官方 CentOS 7 镜像。

首先,让我们拉取 CentOS 7 镜像。docker pull 命令用于从仓库获取镜像。我们将指定 centos 作为镜像名称,7 作为标签(对应 CentOS 7 版本)。

在终端中执行以下命令:

docker pull centos:7

你会看到显示下载进度的输出。Docker 会分层拉取镜像。完成后,输出将类似于:

7: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:7
docker.io/library/centos:7

镜像下载完成后,让我们验证它是否已存在于本地系统中。我们可以使用 docker images 命令列出本地所有的 Docker 镜像。

docker images

输出中应包含一个标签为 7centos 条目。你系统上的 IMAGE IDCREATED 日期可能会有所不同。

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
centos       7         eeb6ee3f44bd   2 years ago    204MB

成功下载 CentOS 7 镜像后,我们就可以在下一步中基于它创建并运行容器了。

创建并配置新的 CentOS 7 虚拟机

在这一步中,我们将创建并配置 CentOS 7 环境。我们将使用下载的 centos:7 Docker 镜像来启动一个容器,而不是使用传统的虚拟机。容器是镜像的运行实例。在本次实验接下来的部分中,它将充当我们的「虚拟机」。

我们将使用 docker run 命令来创建并启动容器。我们会包含几个重要的选项:

  • -it:这两个标志的组合将我们的终端连接到容器的终端,允许我们以交互方式运行命令。
  • --name centos_workstation:这为我们的容器分配了一个易于记忆的名称 centos_workstation。这使得以后管理(启动、停止、删除)容器变得更加容易。
  • centos:7:这指定了我们要运行的镜像。
  • /bin/bash:这是容器启动时将在其内部执行的命令。它将启动 Bash Shell,为我们提供命令提示符。

现在,执行以下命令启动你的 CentOS 容器:

docker run -it --name centos_workstation centos:7 /bin/bash

运行命令后,你会注意到终端提示符发生了变化。它看起来会像这样:

[root@a1b2c3d4e5f6 /]#

这个新的提示符表明你现在正以 root 用户身份位于 CentOS 7 容器内部。那一串字母和数字(例如 a1b2c3d4e5f6)是容器的唯一 ID。你现在已经不在 LabEx 宿主环境的 Shell 中了。

按照原始练习的计划,让我们创建一个非根用户。我们将创建一个名为 student1 的用户。使用 useradd 命令:

useradd student1

接下来,为 student1 设置密码。为了简单起见,我们将使用 student1 作为密码。passwd 命令会提示你输入并再次输入新密码。

passwd student1

出现提示时,输入 student1 并按回车,然后再次输入 student1 并按回车。

Changing password for user student1.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

要完成此步骤,我们需要返回 LabEx 的主终端。输入 exit 并按回车以退出容器的 Shell。

exit

这会停止容器并让你回到 ~/project 目录提示符下。容器 centos_workstation 现在已经存在,并可以在后续步骤中再次启动。

通过自定义分区执行 CentOS 7 安装

在这一步中,我们将配置新的 CentOS 7 环境。原始练习涉及带有自定义磁盘分区的详细安装过程。在我们的 Docker 环境中,这个过程有所不同。「安装」已经完成了,因为我们使用的是预构建的镜像。手动创建 //home/var 等分区的概念不适用于标准的 Docker 容器,因为它以分层方式使用宿主机的系统文件。

相反,我们的重点将放在运行中容器的初始配置上,这是部署新系统后的常见任务。我们将启动容器,更新其软件包,并安装 sudo 以允许我们的非根用户执行管理任务。

首先,让我们启动在上一步中创建的容器。它目前处于停止状态。使用 docker start 命令:

docker start centos_workstation

该命令将输出容器的名称 centos_workstation,确认它已启动。现在,使用 docker attach 将你的终端连接到运行中的容器:

docker attach centos_workstation

你的终端提示符将变为容器的 root Shell,与之前类似:

[root@a1b2c3d4e5f6 /]#

现在开始配置必要的服务。首先,我们需要修复 CentOS 7 的软件源配置,因为它已经停止维护(EOL):

sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Base.repo
sed -i 's/#baseurl/baseurl/g' /etc/yum.repos.d/CentOS-Base.repo
sed -i 's|http://mirror.centos.org|http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Base.repo
yum clean all

最小化的 CentOS 7 镜像非常精简。让我们先使用 CentOS 的包管理器 yum 将所有已安装的软件包更新到最新版本。-y 标志会自动对任何确认提示回答「是」。

yum update -y

这个过程可能需要几分钟才能完成。完成后,我们将安装 sudo 软件包,它不包含在最小化镜像中。sudo 允许获得授权的用户以另一个用户(通常是 root 用户)的身份执行命令。

yum install -y sudo

安装完成后,我们需要为之前创建的 student1 用户授予 sudo 权限。在 CentOS 中,这通常通过将用户添加到 wheel 组来实现。

usermod -aG wheel student1
  • usermod 是修改用户帐户的命令。
  • -aG 标志告诉命令将用户追加(append)到一个补充组(Group),在本例中是 wheel 组。

为了验证 student1 现在拥有 sudo 权限,让我们切换到该用户并进行测试。

su - student1

你的提示符将变为 [student1@a1b2c3d4e5f6 ~]$。现在,尝试使用 sudo 运行 whoami 命令。它应该报告你是 root

sudo whoami

预期的输出是:

root

太棒了!我们的容器现在已经配置好了更新的系统和具有 sudo 权限的用户。要继续下一步,我们需要退出容器,但让它在后台运行。不要输入 exit。相反,请按下组合键 Ctrl+P 紧接着按下 Ctrl+Q。这将使你的终端从容器中脱离,返回到 LabEx 提示符,而容器将继续运行。

安装 GNOME 桌面并启用图形登录

在这一步中,我们将调整原始练习中安装图形桌面的目标。在像我们正在使用的这种容器环境中,安装完整的图形用户界面(GUI)(如 GNOME)并不是标准做法。容器被设计为轻量级的,通常通过命令行进行管理。

相反,我们将通过安装一组常用的命令行工具来练习相同的技能——安装相关软件包组。我们还将安装一个基于文本的网页浏览器,以实现原始目标中在新环境中使用浏览器的需求。

首先,我们需要进入正在运行的容器。在上一步中,我们让 centos_workstation 容器在后台运行。我们将使用 docker exec 命令以 student1 用户身份在其中打开一个新的 Shell。

如果你已经在容器内部,可以跳过此命令。

docker exec -it centos_workstation su - student1

你的命令提示符将变为 [student1@a1b2c3d4e5f6 ~]$,表明你现在正以 student1 身份登录在容器内。

现在,让我们使用 yum 安装「开发工具」(Development Tools)软件包组。该组包含从源码编译软件所需的基本工具,如 gccmakegit。由于 student1 拥有 sudo 权限,我们可以执行此安装。-y 标志会自动回答所有提示。

sudo yum groupinstall -y "Development Tools"

此安装将下载并安装许多软件包,可能需要几分钟时间。安装软件包时,你会看到大量输出。

接下来,为了完成设置,让我们安装 lynx,这是一个轻量级的文本网页浏览器。这是一个非常有用的工具,可以快速查看网站或直接从命令行下载文件。

sudo yum install -y lynx

lynx 的安装应该非常快。让我们通过访问一个简单的网站来测试我们的新浏览器。

lynx example.com

你将在终端中看到 example.com 主页的文本内容。你可以使用方向键进行导航。要退出 lynx,请按键盘上的 q 键。当提示确认时(Are you sure you want to quit? [Y/N]),按 y

你现在已成功为 CentOS 环境配置了重要的开发工具和命令行浏览器。要结束本实验,请退出容器。

输入 exit 退出 student1 用户,然后再次输入 exit 离开容器的 Shell 并返回到你的主 LabEx 终端。

exit
exit

总结

在本实验中,你学习了如何使用基于 Docker 容器的现代方法搭建 CentOS 7 环境。你首先使用 docker pull centos:7 命令从 Docker Hub 公共仓库拉取了官方 CentOS 7 镜像。接着,你通过 docker images 命令列出本地所有 Docker 镜像,验证了镜像已成功下载并存在于本地系统中。

这一初始设置阶段为后续步骤奠定了基础,在后续步骤中,你将基于此镜像创建并运行容器。总体目标是在轻量级且高效的 Docker 容器中,完成 CentOS 7 的完整安装,包括自定义配置以及 GNOME 图形桌面环境的安装。