简介
在本实验中,你将沉浸在一个维多利亚时代的场景中,扮演一名古董商。你的目标是利用现代技术——具体来说是利用 Docker 容器来简化你的运营流程——高效地运输和展示历史文物。
想象一下,你是 1880 年代伦敦一位受人尊敬的古董商,以收藏世界各地的珍贵文物而闻名。然而,你没有使用传统的板条箱和展示柜,而是发现了一种名为「Docker 容器」的革命性技术,它能让你以空前的效率和安全性来打包、运输和展示你的珍贵藏品。
通过本次实验,你将了解 Docker 容器的基础知识,并学会如何使用它们来运行应用程序。在我们的维多利亚时代场景中,这代表了你管理和展示珍贵古董收藏的能力。
配置 Docker 环境
在这一步中,你将首先确保 Docker 环境已正确配置,以便运行容器。你可以将其想象为用必要的工具和设备来准备你的古董工作室。
在终端中执行以下命令来安装 Docker:
sudo apt update sudo apt install docker.io第一条命令用于更新软件包列表,确保你获取的是最新版本的 Docker;第二条命令则用于安装 Docker 本身。
sudo前缀提供了安装所需的管理员权限。Docker 安装完成后,重启 Docker 服务,以确保运行中的守护进程与你刚安装的版本匹配:
sudo systemctl restart docker此命令会使用新安装的软件包版本重新加载 Docker 守护进程。如果 Docker 尚未运行,
restart也会启动该服务。这可以避免在运行第一个容器时出现客户端与守护进程 API 版本不匹配的问题。验证 Docker 是否运行成功:
sudo systemctl status docker此命令用于检查 Docker 是否处于活动状态并正常运行。你应该能看到输出中包含
active (running),这确认了你的 Docker 环境已准备就绪。如果看到inactive或任何错误信息,请在继续之前再次运行sudo systemctl restart docker。为了确保你无需每次都使用
sudo即可运行 Docker 命令,请将你的用户添加到 Docker 组中:sudo usermod -aG docker $USER注意:运行此命令后,你可能需要注销并重新登录才能使更改生效。在本实验中,为了确保兼容性,我们将继续在 Docker 命令前使用
sudo。
运行 Hello-World 容器
现在环境已经配置好了,你将运行第一个 Docker 容器——一个简单的「hello-world」示例。这就像展示你的第一件文物,以确保你的新容器技术能按预期工作。
从 Docker Hub 拉取「hello-world」镜像:
sudo docker pull hello-world此命令会从 Docker Hub(一个公共的 Docker 镜像仓库)下载 hello-world 镜像。这就像从遥远的国度获取你的第一件文物。Docker Hub 就像一个市场,你可以在其中找到各种用途的预打包容器。
运行「hello-world」容器:
sudo docker run hello-world此命令会根据 hello-world 镜像创建并启动一个容器。该容器运行一个简单的程序,输出一条消息后退出。在我们的维多利亚时代场景中,这相当于简要展示你的第一件文物,以验证你的新容器系统是否工作正常。如果此时 Docker 报告客户端或守护进程 API 版本不匹配,请使用
sudo systemctl restart docker重启服务,然后重新运行该命令。检查输出以确保容器运行成功。你应该会看到一条以「Hello from Docker!」开头的消息,后面跟着一些说明性文字。这确认了:
- Docker 已正确安装
- 你的系统可以成功创建容器
- 你可以从 Docker Hub 下载镜像
查看所有容器的列表(包括已退出的容器):
sudo docker ps -a此命令显示所有容器,包括刚才已经退出的 hello-world 容器。你将看到容器 ID、创建该容器所使用的镜像、创建时间以及当前状态等详细信息。
部署 Nginx Web 服务器
在这一步中,你将使用 Docker 容器部署一个 Nginx Web 服务器。在我们的维多利亚时代场景中,这代表着搭建一个优雅的展示柜(Nginx),用于向访客展示你最珍贵的古董(Web 内容)。
从 Docker Hub 拉取 Nginx 镜像:
sudo docker pull nginx此命令会从 Docker Hub 下载官方 Nginx 镜像。Nginx 是一个流行的 Web 服务器,可以提供 HTML 内容服务。这相当于为你的古董收藏购置了一个精美的展示柜。
以分离模式(detached mode)运行 Nginx 容器,并将宿主机的 80 端口映射到容器的 80 端口:
sudo docker run -d -p 80:80 nginx让我们拆解一下这条命令:
run: 创建并启动一个新容器-d: 以分离模式运行容器(在后台运行)-p 80:80: 将宿主机的 80 端口映射到容器内的 80 端口,允许 Web 流量访问 Nginx 服务器nginx: 指定要使用的镜像
这就像把你的展示柜放在陈列室里,并确保访客能够看到你的古董。
验证你的 Nginx 容器是否正在运行:
sudo docker ps此命令显示所有正在运行的容器。你应该能在列表中看到你的 Nginx 容器,表明它正在积极运行。
从顶部菜单栏添加 Web 服务映射,并将端口映射设置为 80。如果 Nginx Web 服务器运行成功,实验环境将自动导航到一个随机 URL,你应该能看到 Nginx 的默认欢迎页面。
可选:如果你想手动从浏览器访问 Nginx 服务器,可以导航到 http://localhost 或你机器的 IP 地址。
如果遇到任何问题,你可以检查容器日志:
sudo docker logs <container_id>将
<container_id>替换为你的 Nginx 容器 ID,你可以通过docker ps命令的输出找到它。
总结
在本实验中,你了解了运行 Docker 容器的基本概念。通过模拟维多利亚时代古董商的历史背景,你获得了利用 Docker 运行能力的实践经验。
你已经学会了如何:
- 配置 Docker 环境
- 从 Docker Hub 拉取镜像
- 在前台和后台(分离模式)运行容器
- 将容器端口暴露给宿主机
- 验证容器状态
这些技能构成了容器技术的基础,并且可以应用于我们古董商场景之外的广泛应用中。在现代环境中,同样的技术被用于部署从简单的 Web 服务器到复杂的微服务架构等各种应用程序。
将应用程序及其依赖项打包到可移植容器中的能力,彻底改变了我们部署和管理软件的方式,就像标准化的集装箱彻底改变了全球贸易一样。正如我们那位维多利亚时代的古董商可能会说的:「这些奇妙的 Docker 容器将彻底改变我们向世界展示珍宝的方式!」



