访问并管理容器

DockerBeginner
立即练习

介绍

Docker 通过引入容器——这种可以在任何安装了 Docker 的系统上运行的轻量级、可移植环境,彻底改变了我们部署和管理应用程序的方式。作为一名开发人员或系统管理员,掌握 Docker 容器管理对于高效的应用程序部署和维护至关重要。在本次挑战中,你将通过执行一系列涵盖使用 Docker 命令行界面(CLI)进行容器管理核心方面的任务,来测试你的 Docker 技能。

在整个挑战过程中,你将经历各种模拟实际工作场景的案例。从启动容器、检查日志,到在容器内执行命令,最后清理资源,你将获得 Docker 容器全生命周期操作的实战经验。

让我们开始深入探索并掌握 Docker 容器管理的艺术吧!

这是一个「挑战」项目,它与「引导实验」不同,你需要尝试独立完成挑战任务,而不是按照实验步骤来学习。挑战通常具有一定的难度。如果你觉得困难,可以与 Labby 讨论或查看解决方案。历史数据表明,这是一个 初学者 级别的挑战,通过率为 98%。它在学习者中获得了 99% 的好评率。

启动容器

任何 Docker 工作流的第一步通常都是启动容器。在本次任务中,你将启动一个容器并学习如何访问其日志——这是排查故障和监控容器行为的关键技能。

任务

你的任务是:

  1. 启动一个名为 my-container 的容器,基于 nginx 镜像。
  2. 查看 my-container 容器的日志。

要求

  • 使用 docker run 命令启动容器。
  • 使用 docker logs 命令查看容器日志。
  • /home/labex/project 目录下执行所有操作。

示例

成功完成此步骤后,当你使用 docker ps 命令时,应该能看到正在运行的容器。输出结果应类似于:

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
3a7d9f642a7f   nginx     "/docker-entrypoint.…"   12 seconds ago   Up 11 seconds   80/tcp    my-container

此输出确认了你的 Nginx 容器已启动并运行,准备好提供 Web 内容。

太棒了,你已经成功启动了第一个容器!能够启动容器并访问其日志是使用 Docker 的基础。接下来,我们将学习如何停止正在运行的容器——这是容器管理中的另一项必备技能。

✨ 查看解决方案并练习

停止容器

虽然运行容器很重要,但了解如何优雅地停止它们也同样关键。当你需要进行维护、更新配置或仅仅是为了释放系统资源时,这项技能特别有用。

任务

你的任务是:

  1. 停止名为 my-container 的容器。

要求

  • 使用 docker stop 命令停止容器。
  • /home/labex/project 目录下执行所有操作。

示例

成功停止容器后,你可以使用 docker ps -a 查看所有容器,包括已停止的容器。输出结果应类似于:

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                      PORTS     NAMES
3a7d9f642a7f   nginx     "/docker-entrypoint.…"   2 minutes ago   Exited (0) 10 seconds ago             my-container

请注意 my-container 的状态是如何变为 "Exited" 的,这表明它已被成功停止。

干得漂亮!停止容器的技能对于有效管理容器生命周期至关重要。既然你已经掌握了启动和停止容器,让我们进入一个更高级的话题:在运行中的容器内部执行命令。

✨ 查看解决方案并练习

在容器中执行命令

Docker 的强大功能之一是能够在运行中的容器内部执行命令。这种能力对于调试、运行维护任务或在不停止容器的情况下更新配置来说是无价的。

任务

你的任务是:

  1. 启动一个名为 my-shell-container 的容器,基于 ubuntu 镜像。该容器应保持在后台运行。
  2. my-shell-container 容器内部执行 echo "Hello World" 命令。

要求

  • 使用 docker run 命令启动容器。
  • 确保容器在启动后保持活跃状态。
  • 使用 docker exec 命令在容器内执行命令。
  • /home/labex/project 目录下执行所有操作。

提示

基于 ubuntu 镜像的容器在启动后会立即退出,除非指定了一个长时间运行的命令。为了保持容器活跃,可以考虑在启动容器时运行类似 sleep infinity 的命令。例如:

docker your-command sleep infinity

示例

启动容器后,你可以使用 docker ps 命令确认它正在运行。输出结果应类似于:

CONTAINER ID   IMAGE     COMMAND            CREATED          STATUS          PORTS     NAMES
1a2b3c4d5e6f   ubuntu    "<command>"        30 seconds ago   Up 29 seconds             my-shell-container

当你在容器内执行 echo 命令时,你应该看到以下输出:

Hello World

这表明你已成功在运行中的容器内部执行了命令。

做得好!你现在已经学会了如何通过在容器内部执行命令来与其进行交互。这项技能为容器管理和维护开启了无限可能。在最后一步中,我们将学习如何通过删除不再需要的容器来进行清理。

✨ 查看解决方案并练习

删除容器

在使用 Docker 的过程中,你经常会为了临时任务或测试而创建容器。当不再需要这些容器时,及时清理它们以释放系统资源并保持 Docker 环境整洁是非常重要的。

任务

你的任务是:

  1. 停止并删除名为 my-shell-container 的容器。

要求

  • 使用 docker stop 命令停止容器。
  • 使用 docker rm 命令删除容器。
  • /home/labex/project 目录下执行所有操作。

示例

完成此步骤后,你可以使用 docker ps -a 确认 my-shell-container 已被删除。你不再应该在容器列表中看到它:

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

这表明你已成功从系统中删除了该容器。

恭喜你完成了最后一步!你现在已经学会了如何通过删除不必要的容器来清理 Docker 环境。这项技能对于维护一个高效且有条理的 Docker 工作空间至关重要。

✨ 查看解决方案并练习

总结

在这次全面的挑战中,你完整体验了 Docker 容器管理的核心环节。你展示了启动容器、访问日志、停止运行中的容器、在容器内执行命令以及最后删除不再需要的容器的能力。

这些技能构成了高效使用 Docker 的基石,并将你在从开发测试到生产部署的各种场景中大显身手。你获得了使用 Docker CLI 的实战经验,这对于任何从事容器化应用程序工作的人来说都是无价的。

在继续你的 Docker 学习之旅时,请记住这些基础操作是构建更复杂 Docker 工作流的组件。定期练习这些技能,你会发现自己对容器管理变得更加精通,最终实现更高效、更精简的开发和部署流程。

继续探索 Docker 的功能,不要犹豫去尝试不同的镜像和容器配置。容器化的世界广阔且充满可能,你现在已经具备了信心去探索它!