Win11 运行 Docker Nginx

概述

Docker 是一种流行的容器化平台,可以帮助开发人员轻松构建、部署和运行应用程序。Nginx 是一个高性能的 Web 服务器和反向代理服务器。本文将介绍如何在 Windows 11 上使用 Docker 运行 Nginx。

准备工作

在开始之前,我们需要确保已经安装了以下软件和工具:

  1. Windows 11 操作系统
  2. Docker Desktop for Windows

请确保 Docker Desktop for Windows 已经正确安装并配置完成,可以在命令行中运行 docker --version 命令来验证安装是否成功。

运行 Docker Nginx

以下是在 Windows 11 上运行 Docker Nginx 的步骤:

步骤 1:创建 Dockerfile

首先,我们需要创建一个 Dockerfile 文件,用于定义构建 Nginx 镜像的配置。

# 指定基础镜像
FROM nginx:latest

# 将本地文件复制到容器中
COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./index.html /usr/share/nginx/html/index.html

# 暴露 Nginx 默认的 HTTP 端口
EXPOSE 80

在上述代码中,我们使用 nginx:latest 作为基础镜像,并将本地的 nginx.confindex.html 文件复制到容器中。

步骤 2:创建 Nginx 配置文件

接下来,我们需要创建一个 Nginx 的配置文件 nginx.conf,用于自定义 Nginx 的行为。

# 引用形式的描述信息

# 设置工作进程数
worker_processes auto;

# 定义事件模块
events {
    worker_connections 1024;
}

# 定义 HTTP 模块
http {
    # 定义服务器模块
    server {
        # 监听 80 端口
        listen 80;

        # 定义默认的服务
        location / {
            root /usr/share/nginx/html;
            index index.html;
        }
    }
}

在上述代码中,我们定义了 Nginx 的工作进程数、事件模块和 HTTP 模块。同时,我们将默认的服务设置为读取 /usr/share/nginx/html 目录下的 index.html 文件。

步骤 3:创建示例网页

为了演示 Docker Nginx 的运行效果,我们需要创建一个示例网页。

<!-- 引用形式的描述信息 -->

<!DOCTYPE html>
<html>
<head>
    <title>Welcome to Docker Nginx</title>
</head>
<body>
    Hello, Docker Nginx!
    <p>This is a sample web page served by Docker Nginx.</p>
</body>
</html>

在上述代码中,我们创建了一个简单的 HTML 页面,用于展示 Docker Nginx 的功能。

步骤 4:构建 Docker 镜像

在完成以上步骤后,我们可以使用以下命令来构建 Docker 镜像:

docker build -t my-nginx .

在上述命令中,-t 参数用于指定镜像的名称,. 表示 Dockerfile 所在的当前目录。

步骤 5:运行 Docker 容器

构建成功后,我们可以使用以下命令来运行 Docker 容器:

docker run -d -p 8080:80 my-nginx

在上述命令中,-d 参数用于在后台运行容器,-p 参数用于将容器的 80 端口映射到宿主机的 8080 端口。

步骤 6:访问 Nginx 网页

现在,我们可以在浏览器中访问 http://localhost:8080,即可看到运行在 Docker Nginx 中的示例网页。

关系图

下面是展示 Docker Nginx 架构关系的关系图:

erDiagram
    Docker -.- Nginx : 运行
    Docker -- Dockerfile : 构建
    Docker -- Docker Image : 镜像
    Docker Image -- Docker Container : 容器
    Docker Container -- HTTP Request : 请求
    HTTP Request --