Docker 入门实战:用容器部署静态网页服务

1. Docker与容器化基础

容器化技术通过隔离环境实现轻量级虚拟化,其核心优势可表示为: $$资源利用率 = \frac{应用实际占用资源}{物理机总资源} \times 100%$$ Docker作为主流容器引擎,比传统虚拟机节省$70%$以上资源,启动时间从分钟级降至秒级。

2. 准备静态网页

创建基础网页文件:

<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
  <title>Docker实战</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <h1>容器化部署成功!</h1>
  <script src="app.js"></script>
</body>
</html>

/* style.css */
body { background: #f0f8ff; text-align: center; }
h1 { color: #2c3e50; }

// app.js
console.log("页面加载完成");

3. 编写Dockerfile

创建构建蓝图:

# 使用官方Nginx镜像作为基础
FROM nginx:alpine

# 删除默认欢迎页
RUN rm -rf /usr/share/nginx/html/*

# 复制网页文件到容器
COPY ./web-content /usr/share/nginx/html

# 暴露80端口
EXPOSE 80

# 启动Nginx服务
CMD ["nginx", "-g", "daemon off;"]

4. 构建Docker镜像

在项目目录执行构建命令:

# 目录结构
project/
├── Dockerfile
└── web-content/
    ├── index.html
    ├── style.css
    └── app.js

# 构建镜像 (-t指定镜像标签)
docker build -t my-webapp:v1 .

构建过程遵循分层存储原理: $$镜像大小 = \sum_{i=1}^{n} (基础层_i + 修改层_i)$$

5. 运行容器

启动容器并测试:

# 映射主机8080端口到容器80端口
docker run -d -p 8080:80 --name web-server my-webapp:v1

# 验证服务
curl http://localhost:8080

端口映射关系: $$主机端口:容器端口 \Rightarrow 8080:80$$

6. 容器管理技巧
  • 查看运行状态docker ps
  • 检查日志docker logs web-server
  • 资源监控docker stats
  • 停止服务docker stop web-server
7. 进阶部署(可选)

推送镜像到Docker Hub:

# 登录Docker Hub
docker login

# 标记镜像
docker tag my-webapp:v1 username/my-webapp:v1

# 推送镜像
docker push username/my-webapp:v1

部署流程完成度: $$\text{部署进度} = \begin{cases} 100% & \text{本地运行成功} \ 120% & \text{云端部署完成} \end{cases}$$

最佳实践

  1. 使用.dockerignore排除无关文件
  2. 多阶段构建减小镜像体积
  3. 设置健康检查HEALTHCHECK指令
  4. 通过环境变量配置服务参数

通过此实战,您已掌握容器化部署的核心流程,后续可扩展至动态网站、微服务等复杂场景。

更多推荐