访问和管理容器

DockerDockerBeginner
立即练习

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

简介

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

在整个挑战中,你将面对各种场景,这些场景反映了你在实际工作中可能遇到的 Docker 容器相关情况。从启动容器、检查日志,到在容器内执行命令,最后清理资源,你将亲身体验 Docker 容器操作的完整生命周期。

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/ContainerOperationsGroup -.-> docker/logs("View Container Logs") subgraph Lab Skills docker/run -.-> lab-389192{{"访问和管理容器"}} docker/ps -.-> lab-389192{{"访问和管理容器"}} docker/stop -.-> lab-389192{{"访问和管理容器"}} docker/rm -.-> lab-389192{{"访问和管理容器"}} docker/exec -.-> lab-389192{{"访问和管理容器"}} docker/logs -.-> lab-389192{{"访问和管理容器"}} end

启动容器

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

任务

你的任务是:

  1. 基于 nginx 镜像启动一个名为 my-container 的容器。
  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. 基于 ubuntu 镜像启动一个名为 my-shell-container 的容器。容器应在后台保持运行。
  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 的功能,并大胆尝试不同的镜像和容器配置。容器化的世界广阔而充满可能性,你现在已经具备了自信地驾驭它的能力!