在 VirtualBox 中安装 CentOS 7 Linux 虚拟机

CompTIACompTIABeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

引言

在本实验中,你将学习如何设置和配置 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 作为标签(tag),这对应于 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

输出应包含一个 centos 条目,标签为 7IMAGE 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 中。

遵循原始练习的计划,让我们创建一个非 root 用户。我们将创建一个名为 student1 的用户。为此,请使用 useradd 命令:

useradd student1

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

passwd student1

在提示时,输入 student1,按 Enter,然后再次输入 student1 并按 Enter。

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

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

exit

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

执行带自定义分区的 CentOS 7 安装

在此步骤中,我们将配置新的 CentOS 7 环境。原始实验涉及一个详细的安装过程,包括自定义磁盘分区。在我们的基于 Docker 的环境中,这个过程有所不同。由于我们使用的是预构建的镜像,因此“安装”已经完成。创建手动分区(如 //home/var)的概念不适用于标准的 Docker 容器,因为它以分层方式使用宿主机的(host's)文件系统。

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

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

docker start centos_workstation

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

docker attach centos_workstation

你的终端提示符将更改为容器的 root shell,与之前类似:

[root@a1b2c3d4e5f6 /]#

现在配置必要的服务并创建我们将要排查的问题。首先,我们需要修复 CentOS 7 的仓库配置,因为它已达到生命周期终点(end-of-life):

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 桌面并启用图形登录

在此步骤中,我们将调整原始实验中安装图形桌面的目标。在我们使用的容器环境中,安装像 GNOME 这样的完整图形用户界面(GUI)并非标准做法。容器被设计为轻量级的,并且通常通过命令行进行管理。

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

首先,我们需要进入我们正在运行的容器。在上一步中,我们将 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 图形桌面环境的安装。