一、题目背景
为某电商平台部署一个简单的 Web 服务,使用 Docker 实现容器化部署,并通过负载均衡提升服务可用性。服务包含 Web 应用(基于 Nginx 提供静态页面,端口 80)、负载均衡器(Docker 原生 Swarm 模式)、数据卷(持久化静态页面数据)。
二、考核点
Docker 环境初始化(Swarm 集群搭建)。
容器化应用部署(Dockerfile 编写、镜像构建)。
服务编排与负载均衡(Docker Compose 或 Swarm 服务定义)。
数据持久化(Volume 或 Bind Mount 使用)。
故障排查与日志分析。
三、操作要求
(一)环境准备
初始化一个 Docker Swarm 集群,当前节点作为 Manager 节点。
创建一个名为 web_network 的 Docker 自定义网络(驱动为 overlay,用于跨容器通信)。
(二)构建 Web 应用镜像
创建一个目录 web-app,编写 Dockerfile:
基于官方 Nginx:alpine 镜像。
将本地 html 目录中的静态文件复制到容器内的 /usr/share/nginx/html 路径。
暴露容器端口 80。
构建镜像并标记为 web-service:v1。
(三)部署 Web 服务(Swarm 模式)
使用 Swarm 服务部署 3 个 Web 容器副本:
服务名为 web-service,挂载本地 html_data 目录为容器内的 /usr/share/nginx/html(使用 Volume 实现持久化)。
容器加入 web_network 网络。
发布容器端口 80 到宿主机端口 8080(单节点端口映射)。
部署一个负载均衡服务(使用 nginx 作为负载均衡器):
服务名为 lb-service,暴露宿主机端口 80 到容器端口 80。
负载均衡器容器加入 web_network 网络,并通过 DNS 发现后端的 web-service 容器。
在负载均衡器的 Nginx 配置中,定义 upstream 指向 web-service 服务的 DNS 名称,实现轮询负载均衡。
(四)验证与排错
通过浏览器访问 http://<宿主机IP>,确认能正常访问静态页面。
手动停止一个 Web 容器副本,验证负载均衡器是否能自动将请求分发到其他存活容器。
查看所有容器的日志,分析部署过程中可能出现的问题(如端口冲突、文件权限错误等)。
鄂ICP备2023011697号-1 | Powered By 91代做