计算机系统应用教程网站

网站首页 > 技术文章 正文

第 8 章:NGINX 和 Docker docker nginx keepalived

btikc 2024-09-30 13:01:21 技术文章 13 ℃ 0 评论

Docker 是一个强大的容器化平台,允许您将应用程序及其依赖项打包到隔离的容器中。 NGINX 可以在 Docker 容器中有效地使用来部署 Web 应用程序、代理服务或提供静态内容。在本章中,我们将探讨 NGINX 和 Docker 如何协同工作,并提供一些常见场景的演示。

## 8.1 NGINX 和 Docker 简介

Docker 通过将应用程序及其环境封装在容器中来简化应用程序部署。 NGINX 可以通过多种方式在 Docker 容器中使用:

- **服务Web应用程序**:您可以使用NGINX打包您的Web应用程序,以确保不同环境之间的一致性。

- **负载均衡**:部署 NGINX 容器作为负载均衡器,以在其他容器或服务之间分配流量。

- **反向代理**:使用 NGINX 作为容器内的反向代理,将请求转发到其他服务。

- **SSL/TLS 终止**:NGINX 可以在容器中处理 SSL/TLS 终止,降低 SSL/TLS 管理的复杂性。

## 8.2 在 Docker 容器中运行 NGINX

在 Docker 容器中运行 NGINX 非常简单。 您可以从 Docker Hub 中提取官方 NGINX 映像,或为您的特定用例创建自定义 Dockerfile。

### 演示 1:在 Docker 容器中运行 NGINX

在此演示中,我们将从 Docker Hub 中提取官方 NGINX 映像并在 Docker 容器中运行它。

**第 1 步:** 从 Docker Hub 拉取官方 NGINX 镜像。

docker pull nginx

**步骤 2:** 在 Docker 容器中运行 NGINX。

docker run -d -p 80:80 --name my_nginx nginx

- `-d`:以分离模式运行容器。

- `-p 80:80`:将主机上的端口 80 映射到容器中的端口 80。

- `--name my_nginx`:为容器分配名称“my_nginx”。

**步骤 3:** 打开 Web 浏览器并导航到“http://localhost”或 Docker 主机的 IP 地址来访问 NGINX 容器。

NGINX 现在运行在 Docker 容器中,您可以从主机访问它。

## 8.3 在 Docker 中使用 NGINX 作为反向代理

您可以在 Docker 容器中使用 NGINX 作为反向代理,将请求转发到其他服务或容器。这使您可以集中流量管理和路由。

### 演示 2:在 Docker 中使用 NGINX 作为反向代理

在此演示中,我们将在 Docker 容器中运行 NGINX 作为反向代理,以将请求转发到在另一个容器中运行的简单 Node.js 应用程序。

**第 1 步:** 创建 Docker 网络以实现容器之间的通信。

docker network create my_network

**步骤 2:** 在容器中运行一个简单的 Node.js 应用程序。

docker run -d --name node_app --network my_network node:14

**第 3 步:** 使用反向代理设置创建自定义 NGINX 配置文件 `nginx.conf`:

http {


  server {
  
    listen 80;
    
    location / {
    
      proxy_pass http://node_app;
    
    }
    
  }
  
}

**第 4 步:** 构建包含“nginx.conf”配置文件的自定义 NGINX 映像。

docker build -t custom_nginx -f Dockerfile .


**步骤 5:** 使用反向代理设置运行自定义 NGINX 容器。

docker run -d -p 80:80 --network my_network --name nginx_proxy custom_nginx

**第 6 步:** 打开 Web 浏览器并导航到“http://localhost”或 Docker 主机的 IP 地址来访问 NGINX 代理。

NGINX 运行在 Docker 容器中,将请求转发到另一个容器中的 Node.js 应用程序。

## 8.4 用于 NGINX 和多个容器的 Docker Compose

Docker Compose 简化了多容器应用程序的管理。它允许您在单个“docker-compose.yml”文件中定义应用程序的服务、网络和卷。

### 演示 3:将 Docker Compose 用于 NGINX 和多个容器

在此演示中,我们将使用 Docker Compose 定义 NGINX 反向代理服务和在单独容器中运行的 Web 应用程序服务。

**第 1 步:** 创建一个包含以下内容的 `docker-compose.yml` 文件:

version: '3'


services:


nginx:


image: nginx


ports:


- "80:80"


volumes:


- ./nginx.conf:/etc/nginx/nginx.conf


depends_on:


- web


web:


image: node:14

**步骤 2:** 使用 NGINX 配置创建一个 `nginx.conf` 文件,类似于前面的反向代理示例。

**步骤 3:** 运行 Docker Compose 应用程序:

docker-compose up -d

**第 4 步:** 通过打开 Web 浏览器并导航到“http://localhost”或 Docker 主机的 IP 地址来访问 NGINX 代理。

NGINX 在容器中作为反向代理运行,将请求转发到另一个容器中的 Node.js 应用程序。

使用 Docker Compose 可以简化多容器应用程序的管理,并且可以更轻松地定义服务、网络和卷之间的关系。

本章探讨了 NGINX 和 Docker 可以一起使用来部署 Web 应用程序、设置反向代理以及简化多容器应用程序的管理。通过利用 NGINX 和 Docker,您可以简化 Web 服务和应用程序的部署、扩展和管理。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表