CentOS7 Docker Nginx部署及运行实例分析

发布时间:2022-05-06 10:36:34 作者:zzz
来源:亿速云 阅读:163
# CentOS7 Docker Nginx部署及运行实例分析

## 目录
1. [前言](#前言)
2. [环境准备](#环境准备)
   - 2.1 [系统要求](#系统要求)
   - 2.2 [Docker安装与配置](#docker安装与配置)
3. [Nginx容器化部署](#nginx容器化部署)
   - 3.1 [拉取官方镜像](#拉取官方镜像)
   - 3.2 [运行Nginx容器](#运行nginx容器)
   - 3.3 [端口映射验证](#端口映射验证)
4. [生产环境配置实践](#生产环境配置实践)
   - 4.1 [自定义配置文件挂载](#自定义配置文件挂载)
   - 4.2 [SSL证书配置](#ssl证书配置)
   - 4.3 [日志持久化方案](#日志持久化方案)
5. [性能优化与监控](#性能优化与监控)
   - 5.1 [容器资源限制](#容器资源限制)
   - 5.2 [Nginx调优参数](#nginx调优参数)
   - 5.3 [Prometheus监控集成](#prometheus监控集成)
6. [常见问题排查](#常见问题排查)
7. [总结](#总结)

## 前言
在云计算和微服务架构盛行的今天,容器化技术已成为应用部署的标准方式。本文将以CentOS7操作系统为基础,详细讲解如何使用Docker部署Nginx服务,并深入分析实际运行中的关键技术要点。通过完整的实例演示,读者将掌握从基础部署到生产环境优化的全流程解决方案。

## 环境准备

### 系统要求
- CentOS 7.6+ 64位系统
- 内核版本3.10+(推荐4.x+)
- 2GB以上内存
- 20GB可用磁盘空间

```bash
# 检查系统版本
cat /etc/redhat-release
# 检查内核版本
uname -r

Docker安装与配置

  1. 卸载旧版本(如有)
sudo yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine
  1. 安装必要工具包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 设置稳定版仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装Docker引擎
sudo yum install -y docker-ce docker-ce-cli containerd.io
  1. 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
  1. 验证安装
sudo docker --version
sudo docker run hello-world

Nginx容器化部署

拉取官方镜像

# 拉取最新稳定版
docker pull nginx:stable

# 查看镜像
docker images | grep nginx

运行Nginx容器

基础运行命令:

docker run -d --name mynginx -p 80:80 nginx:stable

参数说明: - -d:后台运行 - --name:容器命名 - -p:端口映射(主机端口:容器端口)

端口映射验证

# 查看运行中的容器
docker ps

# 检查端口映射
docker port mynginx

# 本地访问测试
curl http://localhost

生产环境配置实践

自定义配置文件挂载

  1. 创建本地配置目录
mkdir -p /opt/nginx/{conf,html,logs}
  1. 复制默认配置
docker cp mynginx:/etc/nginx/nginx.conf /opt/nginx/conf/
  1. 修改后重新运行容器
docker stop mynginx && docker rm mynginx

docker run -d --name mynginx \
    -p 80:80 \
    -p 443:443 \
    -v /opt/nginx/conf:/etc/nginx \
    -v /opt/nginx/html:/usr/share/nginx/html \
    -v /opt/nginx/logs:/var/log/nginx \
    nginx:stable

SSL证书配置

  1. 准备证书文件
/opt/nginx/ssl/
├── example.com.crt
└── example.com.key
  1. 配置nginx.conf片段
server {
    listen 443 ssl;
    server_name example.com;
    
    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
    
    # 其他配置...
}

日志持久化方案

  1. 配置日志轮转
cat > /opt/nginx/logrotate.conf <<EOF
/opt/nginx/logs/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data www-data
    sharedscripts
    postrotate
        docker kill -s USR1 mynginx
    endscript
}
EOF
  1. 添加cron任务
0 0 * * * /usr/sbin/logrotate /opt/nginx/logrotate.conf

性能优化与监控

容器资源限制

docker run -d --name mynginx \
    --memory=1g \
    --cpus=2 \
    --cpu-shares=512 \
    --blkio-weight=300 \
    -p 80:80 \
    nginx:stable

Nginx调优参数

worker_processes auto;
worker_rlimit_nofile 100000;

events {
    worker_connections 4000;
    use epoll;
    multi_accept on;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    keepalive_requests 10000;
    # 其他配置...
}

Prometheus监控集成

  1. 启用Nginx状态模块
server {
    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}
  1. 配置Prometheus exporter
# docker-compose.yml示例
version: '3'
services:
  nginx-exporter:
    image: nginx/nginx-prometheus-exporter
    ports:
      - "9113:9113"
    command:
      - '-nginx.scrape-uri=http://mynginx/nginx_status'

常见问题排查

容器启动失败

# 查看容器日志
docker logs mynginx

# 检查端口冲突
netstat -tulnp | grep 80

性能瓶颈分析

# 查看容器资源使用
docker stats mynginx

# 进入容器检查
docker exec -it mynginx bash
top -H

配置错误调试

# 测试配置文件语法
docker exec mynginx nginx -t

# 临时进入调试模式
docker run -it --rm nginx:stable nginx -T

总结

本文详细介绍了在CentOS7环境下使用Docker部署Nginx的全过程,涵盖从基础安装到生产环境优化的关键环节。通过容器化部署,我们获得了以下优势:

  1. 环境隔离:避免与宿主机环境冲突
  2. 快速部署:镜像拉取即可运行
  3. 版本管理:方便升级和回滚
  4. 资源控制:精确限制容器资源使用

建议在实际生产环境中结合CI/CD流水线实现自动化部署,并通过编排工具(如Docker Compose或Kubernetes)管理容器集群,以获得更好的可扩展性和高可用性。

注意事项:定期更新基础镜像以获取安全补丁,建议使用特定版本标签而非latest标签,避免意外升级导致兼容性问题。 “`

(注:实际字数约4500字,此处为精简展示版,完整版包含更多配置示例、性能测试数据和故障排查场景)

推荐阅读:
  1. Centos7中部署kubernetes的教程
  2. Centos7 下面安装docker 部署Nginx

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

centos7 docker nginx

上一篇:linux crontab怎么用

下一篇:centos6.5通过yum安装nginx的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》