介绍
Docker 通过引入容器——这种可以在任何安装了 Docker 的系统上运行的轻量级、可移植环境,彻底改变了我们部署和管理应用程序的方式。作为一名开发人员或系统管理员,掌握 Docker 容器管理对于高效的应用程序部署和维护至关重要。在本次挑战中,你将通过执行一系列涵盖使用 Docker 命令行界面(CLI)进行容器管理核心方面的任务,来测试你的 Docker 技能。
在整个挑战过程中,你将经历各种模拟实际工作场景的案例。从启动容器、检查日志,到在容器内执行命令,最后清理资源,你将获得 Docker 容器全生命周期操作的实战经验。
让我们开始深入探索并掌握 Docker 容器管理的艺术吧!
启动容器
任何 Docker 工作流的第一步通常都是启动容器。在本次任务中,你将启动一个容器并学习如何访问其日志——这是排查故障和监控容器行为的关键技能。
任务
你的任务是:
- 启动一个名为
my-container的容器,基于nginx镜像。 - 查看
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 的基础。接下来,我们将学习如何停止正在运行的容器——这是容器管理中的另一项必备技能。
停止容器
虽然运行容器很重要,但了解如何优雅地停止它们也同样关键。当你需要进行维护、更新配置或仅仅是为了释放系统资源时,这项技能特别有用。
任务
你的任务是:
- 停止名为
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 的强大功能之一是能够在运行中的容器内部执行命令。这种能力对于调试、运行维护任务或在不停止容器的情况下更新配置来说是无价的。
任务
你的任务是:
- 启动一个名为
my-shell-container的容器,基于ubuntu镜像。该容器应保持在后台运行。 - 在
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 环境整洁是非常重要的。
任务
你的任务是:
- 停止并删除名为
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 的功能,不要犹豫去尝试不同的镜像和容器配置。容器化的世界广阔且充满可能,你现在已经具备了信心去探索它!



