使用 Docker 运行容器

DockerBeginner
立即练习

介绍

在这个实验中,你将置身于维多利亚时代的场景中,扮演一名古董经销商。你的目标是利用现代技术——具体来说,借助 Docker 容器来简化操作流程,从而高效地运输和展示历史文物。

想象一下,你是 19 世纪 80 年代伦敦一位备受尊敬的古董经销商,以拥有来自世界各地的精美文物藏品而闻名。不过,你没有使用传统的板条箱和展示柜,而是发现了一种名为“Docker 容器”的革命性技术,它能让你以前所未有的效率和安全性来打包、运输和展示你珍贵的藏品。

在这个实验结束时,你将了解 Docker 容器的基础知识,以及如何使用它们来运行应用程序。在我们的维多利亚时代场景中,这代表着你有能力管理和展示你珍贵的古董藏品。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 99%。获得了学习者 99% 的好评率。

设置你的 Docker 环境

在这一步中,你要先确保你的 Docker 环境已正确设置,以便运行容器。这就好比你要为古董工作室准备好必要的工具和设备。

  1. 在终端中执行以下命令来安装 Docker:

    sudo apt update
    sudo apt install docker.io

    第一条命令用于更新软件包列表,以确保你能获取到最新版本的 Docker;第二条命令则用于安装 Docker 本身。sudo 前缀用于授予安装所需的管理员权限。

  2. Docker 安装完成后,启动 Docker 服务:

    sudo systemctl start docker

    此命令用于激活 Docker 服务,就像你打开工作室开始营业一样。现在,Docker 守护进程正在后台运行,随时准备处理你的容器请求。

  3. 验证 Docker 是否成功运行:

    sudo systemctl status docker

    此命令用于检查 Docker 是否处于活动状态并正常运行。你应该会看到输出中带有绿色文本的“active (running)”,这表明你的 Docker 环境已准备就绪。如果你看到“inactive”或任何错误消息,则可能需要重新启动服务。

  4. 为了确保你无需每次都使用 sudo 来运行 Docker 命令,将你的用户添加到 Docker 组:

    sudo usermod -aG docker $USER

    注意:运行此命令后,你可能需要注销并重新登录才能使更改生效。在本实验中,为确保兼容性,我们将继续在 Docker 命令前使用 sudo

运行一个 Hello-World 容器

既然你的环境已经设置好,你将运行你的第一个 Docker 容器 —— 一个简单的“hello-world”示例。这就好比你展示第一件文物,以确保新的容器技术能按预期工作。

  1. 从 Docker Hub 拉取“hello-world”镜像:

    sudo docker pull hello-world

    此命令从 Docker Hub(一个 Docker 镜像的公共仓库)下载“hello-world”镜像。这就像是你从远方获得了第一件文物。Docker Hub 就像一个市场,你可以在那里找到各种用途的预打包容器。

  2. 运行“hello-world”容器:

    sudo docker run hello-world

    此命令从“hello-world”镜像创建并启动一个容器。该容器运行一个简单的程序,输出一条消息后就退出。在我们的维多利亚时代场景中,这相当于短暂展示你的第一件文物,以验证新的容器系统是否正常工作。

  3. 检查输出,确保容器成功运行。你应该会看到一条以“Hello from Docker!”开头的消息,后面跟着一些解释性文本。这确认了:

    • Docker 已正确安装
    • 你的系统可以成功创建容器
    • 你可以从 Docker Hub 下载镜像
  4. 查看所有容器的列表(包括已退出的容器):

    sudo docker ps -a

    此命令会显示所有容器,包括现在已经退出的“hello-world”容器。你会看到容器 ID、它是从哪个镜像创建的、创建时间以及当前状态等详细信息。

部署一个 Nginx Web 服务器

在这一步中,你将使用 Docker 容器部署一个 Nginx Web 服务器。在我们的维多利亚时代场景中,这相当于为向访客展示你最珍贵的古董(Web 内容)搭建一个精致的展示柜(Nginx)。

  1. 从 Docker Hub 拉取 Nginx 镜像:

    sudo docker pull nginx

    此命令从 Docker Hub 下载官方的 Nginx 镜像。Nginx 是一个流行的 Web 服务器,可以提供 HTML 内容。这就相当于为你的古董藏品购置了一个精美的展示柜。

  2. 以分离模式运行一个 Nginx 容器,将主机的 80 端口映射到容器的 80 端口:

    sudo docker run -d -p 80:80 nginx

    让我们来拆解一下这个命令:

    • run:创建并启动一个新容器
    • -d:以分离模式(在后台)运行容器
    • -p 80:80:将你主机的 80 端口映射到容器内的 80 端口,使 Web 流量能够访问 Nginx 服务器
    • nginx:指定要使用的镜像

    这就好比把你的展示柜放置在展厅里,并确保访客能够看到你的古董。

  3. 验证你的 Nginx 容器是否正在运行:

    sudo docker ps

    此命令会显示所有正在运行的容器。你应该能在列表中看到你的 Nginx 容器,这表明它正在活跃运行。

  4. 从实验顶部菜单添加一个 Web 服务映射,并将端口映射设置为 80。如果 Nginx Web 服务器成功运行,实验环境将自动导航到服务器实验中的一个随机 URL,你应该会看到默认的 Nginx 欢迎页面。

  5. 可选操作:如果你想手动在浏览器中访问 Nginx 服务器,可以导航到 http://localhost 或你机器的 IP 地址。

  6. 如果你遇到任何问题,可以查看容器日志:

    sudo docker logs <container_id>

    <container_id> 替换为你的 Nginx 容器的 ID,你可以从 docker ps 命令的输出中找到该 ID。

总结

在这个实验中,你已经了解了运行 Docker 容器的基本概念。通过模拟一个历史场景,扮演维多利亚时代的古董经销商,你获得了运用 Docker 运行功能的实践经验。

你学会了如何:

  • 设置 Docker 环境
  • 从 Docker Hub 拉取镜像
  • 以前台和分离模式运行容器
  • 将容器端口暴露给主机
  • 验证容器状态

这些技能构成了容器技术的基础,并且可以应用于古董经销商场景之外的广泛应用中。在现代环境中,同样的技术被用于部署从简单 Web 服务器到复杂微服务架构的各种应用程序。

将应用程序及其依赖项打包到可移植容器中的能力彻底改变了我们部署和管理软件的方式,就像标准化的运输集装箱改变了全球贸易一样。就像我们的维多利亚时代古董经销商可能会说的那样:“这些神奇的 Docker 容器将彻底改变我们向世界展示珍宝的方式!”