📢 转载信息
原文链接:https://www.kdnuggets.com/5-fun-docker-projects-for-absolute-beginners
原文作者:Kanwal Mehreen
Image by Author
# 引言
在深入项目之前,让我们先明确一下什么是Docker以及人们为何如此关注它。Docker将应用程序及其所需的一切打包到一个容器中。容器是一个轻量级、隔离的环境,无论在哪里运行都保持一致。这样就消除了“在我机器上可以运行”的问题。如果它能在你的笔记本电脑上运行,那么它在服务器或云端也能以相同的方式运行。开发者喜欢这一点,因为它使代码共享变得简单且可预测。在这一系列“5个有趣的项目”中,我们的重点是通过实践来学习。每个项目都教授一项核心的Docker技能。到最后,你不仅会在理论上了解Docker,还会知道如何实际使用它。
# 1. 使用Nginx和Docker托管静态网站
Techdox的这个视频向您展示了如何使用Docker中的Nginx来托管网站。你将容器化一个Web服务器,添加你的网站文件,并将所有内容运行在一个容器中。本教程会引导你创建简单的Dockerfile(或Docker Compose),设置Nginx来提供你的页面,并启动容器使网站上线。你无需在本地机器上安装Nginx,因为所有内容都运行在Docker内部。这使得设置保持干净且可重现。
# 2. 使用Docker Compose构建多容器Docker应用
这个视频展示了如何使用Docker Compose将两个服务(一个Python Flask后端和一个Redis数据库)组合运行。所有服务配置,包括构建、端口和连接,都定义在一个docker-compose.yml文件中。你只需一个命令docker compose up即可启动所有服务。容器会自动通信,环境设置保持集中化。这使得在任何机器上运行和管理应用程序变得容易,同时也为处理Docker中的多个服务提供了实际的例子。
# 3. 多个容器共享同一个数据库
在“One Database service for Multiple Docker container Services”这个视频中,作者展示了如何运行一个数据库容器,并让多个应用程序容器连接到它。你只需在Docker中设置一次MySQL或其他数据库,然后每个服务运行在自己的容器中,但通过共享的Docker网络或正确的端口映射连接到同一个数据库。你将学习如何配置网络、暴露数据库端口以及链接容器以实现安全通信。这种方法通过集中数据库来节省资源,同时也教会了你何时共享数据库比使用单独实例更合适。
# 4. 使用Docker中的Jenkins实现持续集成自动化
这些视频展示了如何使用Docker中的Jenkins构建完整的持续集成(CI)流水线,以便在代码更改时自动创建Docker镜像。第一个视频“Build & Push React Docker Image with a Jenkins Pipeline”会引导你设置Jenkins容器,创建流水线来拉取源代码、构建Docker镜像,并可选择运行测试或将镜像推送到仓库。第二个视频“Automated CI with Jenkins on Docker to Build Docker Images”侧重于一个React应用,展示了如何将Jenkins连接到源代码仓库,并自动构建、标记和推送Docker镜像。这两个教程都说明了容器化Jenkins如何使你的构建环境保持隔离、可重现和一致。一旦设置完成,每一次代码更新都会触发一次新的构建,使部署可靠且自动化。
# 5. Docker的日志记录和监控
这些视频展示了如何使用Docker构建完整的可观测性堆栈。Prometheus收集系统和容器指标。Loki存储日志。Grafana实时显示所有内容在仪表板上。在第一个视频“Loki, Prometheus, Grafana & Docker: Logging & Monitoring”中,你将学习如何为每个服务设置Docker,正确连接它们,并将指标与日志关联起来,以了解容器的性能情况。第二个视频“Server Monitoring: Prometheus and Grafana Tutorial”侧重于使用Prometheus和Grafana在便携、可重现的设置中监控服务器或容器环境。它展示了如何将Prometheus配置为Grafana的数据源,设置指标端点,并创建仪表板来跟踪CPU、内存和容器性能。这两种方法都依赖于容器化,使得该堆栈易于在任何机器上运行、复制和扩展。
# 总结
这五个项目将你的Docker技能一层一层地提升起来。你将学会托管网站、连接多个服务、共享数据库、自动化构建以及监控所有内容。每个项目都提供了可以在实际工作中应用的实用技能。现在轮到你来尝试这些项目,并亲自探索Docker了。
Kanwal Mehreen 是一位机器学习工程师和技术作家,对数据科学以及人工智能与医学的交叉领域抱有深厚的兴趣。她合著了电子书《Maximizing Productivity with ChatGPT》。作为2022年亚太区谷歌一代学者,她倡导多样性和学术卓越。她还获得了Teradata多样性科技学者、Mitacs全球链接研究学者和哈佛WeCode学者等荣誉。Kanwal是变革的坚定倡导者,她创立了FEMCodes以赋能STEM领域的女性。
🚀 想要体验更好更全面的AI调用?
欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。
评论区