Docker 安装检查

DockerBeginner
立即练习

简介

Docker 是一个用于构建和运行容器的平台。容器会将应用程序及其所需的文件和库打包在一起,使应用程序在不同环境中的行为更加一致。

容器不同于完整的虚拟机。容器会隔离进程和文件系统视图,但与主机共享内核。因此,与虚拟机相比,容器通常启动更快、资源占用更少。

Docker 之所以广受欢迎,是因为开发人员和运维人员经常遇到同一个问题:软件在一台机器上可以运行,在另一台机器上却因为环境不同而失败。容器通过统一应用程序的打包和启动方式,减少了这种环境差异。

在本实验中,你将检查 Docker 环境的运行状况。在正式使用容器之前,需要确认 Docker Engine 已安装、客户端可以与其通信,并且系统能够成功运行测试镜像。

你将完成以下检查:

  • 验证已安装的 Docker 版本。
  • 运行测试容器,确认系统可以下载并执行镜像。
  • 检查容器状态,了解容器的生命周期。

检查 Docker 版本

验证 Docker 环境的第一步,是检查 Docker 命令行界面(CLI)是否可以访问。这可以确认系统的 PATH 中是否包含 docker 命令。

这项检查只能证明客户端工具存在。它还不能证明后台的 Docker Engine 运行正常,也不能证明容器确实可以运行。

打开终端并执行以下命令:

docker --version

示例输出:

Docker version 20.10.21, build 20.10.21-0ubuntu1~22.04.3

输出会显示已安装的 Docker 版本和构建信息。看到版本号,表示 Docker 客户端已成功安装,并且可以接受命令。

运行测试容器

确认 Docker 客户端可用后,下一步是验证 Docker Daemon(管理容器的后台服务)是否正在运行,以及是否能够启动容器。

客户端与守护进程的分离是 Docker 的核心设计之一。你输入的 docker 命令属于客户端,而守护进程负责实际拉取镜像、创建容器以及管理容器生命周期。

我们将使用官方的 hello-world 镜像完成检查。这个精简镜像专门用于测试安装是否正常。

在终端中运行以下命令:

sudo docker run hello-world

为什么需要使用 sudo?

Docker 守护进程通过 Unix 套接字进行通信。默认情况下,该套接字归 root 用户所有,其他用户只能通过 sudo 访问它。

运行此命令时会发生什么?

  1. 检查本地镜像: Docker 检查本机是否存在 hello-world 镜像。
  2. 拉取镜像: 如果本地没有找到,Docker 会从 Docker Hub(公共镜像仓库)下载该镜像。
  3. 运行容器: Docker 使用该镜像创建新容器并执行它。

这个过程也说明了镜像与容器之间的区别。镜像是可重复使用的模板,而容器是根据该模板创建的运行中或已停止的实例。

分析容器输出和状态

在本步骤中,你将分析上一条命令的输出,以确认容器已成功运行。

运行 sudo docker run hello-world 后,你应该会看到类似以下内容的消息:

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

这条消息确认 Docker 的完整流程——客户端、守护进程、镜像仓库和容器——都在正常工作。

hello-world 容器的设计目的就是输出这条消息,然后立即退出。虽然它已经停止运行,但该容器仍然存在于系统中。你可以列出所有容器,包括已停止的容器,以验证这一点。

这是学习容器生命周期的第一个重要概念:容器可以处于已退出状态。在 Docker 中,「正在运行」和「存在」相关,但并不是同一个概念。

运行以下命令:

sudo docker ps -a
  • ps:列出容器。
  • -a(或 --all):显示所有容器,而不仅是正在运行的容器。

你应该会在输出中看到 hello-world,其状态为 Exited。这表示容器已创建、运行并成功完成任务。

总结

在本实验中,你已成功验证 Docker 安装。你学会了如何:

  • 检查 Docker 版本,以确认 CLI 工具已安装。
  • 运行 hello-world 容器,以测试与 Docker 守护进程的连接,以及拉取镜像的能力。
  • 检查输出并列出容器历史记录,以验证容器是否执行成功。

完成这些检查后,你可以确认当前环境已准备好执行更高级的 Docker 操作。