CentOS7 Docker Nginx部署及运行详解

  • Post category:Linux

CentOS7 Docker Nginx 部署及运行详解

本文将带你详细了解在 CentOS 7 系统上通过 Docker 部署 Nginx 环境的方法。

安装 Docker

在 CentOS 7 系统下,Docker 可以通过 yum 直接安装。

sudo yum install docker -y

安装完成后,启动 Docker。

sudo systemctl start docker

拉取 Nginx 镜像

在 Docker Hub 上找到官方的 Nginx 镜像并拉取。

sudo docker pull nginx

拉取镜像的过程可能会需要一些时间,请耐心等待。

运行 Nginx 容器

使用以下命令启动 Nginx 容器。

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

这个命令中指定的 -d 表示在后台运行容器,-p 表示将主机的 80 端口映射到容器的 80 端口上,--name 表示容器的名称为 mynginx,nginx 表示要运行的镜像名称。

挂载本地目录

指定本地文件夹与容器内文件夹之间的映射,方便在本地修改 Nginx 配置文件。

sudo docker run -d -p 80:80 -v /path/to/local/nginx.conf:/etc/nginx/nginx.conf --name mynginx nginx

其中 -v 参数指定映射本地文件夹和容器文件夹。示例中 /path/to/local/nginx.conf 为本地 Nginx 配置文件的路径,/etc/nginx/nginx.conf 为容器内 Nginx 配置文件的路径。

在容器内部安装 Nginx 模块

使用以下命令进入 Nginx 容器的终端。

sudo docker exec -it mynginx bash

在终端中,使用以下命令安装 vim 文本编辑器。

apt-get update && apt-get install vim -y

接下来,使用以下命令安装 Nginx 的 gzip 模块。

cd /usr/local/src/
wget https://zlib.net/zlib-1.2.11.tar.gz
tar -xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make && make install

cd /usr/local/src/
wget http://www.openssl.org/source/openssl-1.1.0f.tar.gz
tar -xzvf openssl-1.1.0f.tar.gz

cd /usr/local/src/
wget https://github.com/google/ngx_brotli/archive/master.zip
unzip master.zip

cd /usr/local/src/
wget https://nginx.org/download/nginx-1.14.2.tar.gz
tar -xzvf nginx-1.14.2.tar.gz
cd nginx-1.14.2/

./configure --sbin-path=/usr/local/nginx/nginx --with-http_ssl_module --with-http_v2_module --with-stream --with-stream_ssl_module --with-http_gzip_static_module --add-module=/usr/local/src/ngx_brotli-master --with-openssl=/usr/local/src/openssl-1.1.0f --with-zlib=/usr/local/src/zlib-1.2.11
make && make install

上面这些命令是安装 Nginx gzip 模块的基本操作,需要根据自己的实际情况进行修改。

示例说明

示例一:本地目录的映射

假设在本地有一个 Nginx 配置文件 nginx.conf,需要将其挂载到容器内 /etc/nginx 目录下,可以使用以下命令:

sudo docker run -d -p 80:80 -v ${pwd}/nginx.conf:/etc/nginx/nginx.conf --name mynginx nginx

${pwd} 表示当前目录的路径,所以上述命令会将该目录下的 nginx.conf 文件挂载到容器内 /etc/nginx 目录下。

示例二:安装第三方模块

假设需要在 Nginx 中使用 gzip 模块,可以通过以下方式安装并载入该模块。

在 Dockerfile 中使用以下代码:

FROM nginx

RUN apt-get update && apt-get install -y vim

RUN cd /usr/local/src/ && \
    wget https://zlib.net/zlib-1.2.11.tar.gz && \
    tar -xzvf zlib-1.2.11.tar.gz && \
    cd zlib-1.2.11 && \
    ./configure && \
    make && make install

RUN cd /usr/local/src/ && \
    wget http://www.openssl.org/source/openssl-1.1.0f.tar.gz && \
    tar -xzvf openssl-1.1.0f.tar.gz

RUN cd /usr/local/src/ && \
    wget https://github.com/google/ngx_brotli/archive/master.zip && \
    unzip master.zip

RUN cd /usr/local/src/ && \
    wget https://nginx.org/download/nginx-1.14.2.tar.gz && \
    tar -xzvf nginx-1.14.2.tar.gz && \
    cd nginx-1.14.2/ && \
    ./configure --with-http_ssl_module --with-http_v2_module --with-stream --with-stream_ssl_module --with-http_gzip_static_module --add-module=/usr/local/src/ngx_brotli-master --with-openssl=/usr/local/src/openssl-1.1.0f --with-zlib=/usr/local/src/zlib-1.2.11 && \
    make && make install

COPY nginx.conf /etc/nginx/nginx.conf

在本地构建镜像并运行容器。

sudo docker build -t custom-nginx .
sudo docker run -d -p 80:80 --name mynginx custom-nginx

总结

本文简要介绍了在 CentOS7 系统上通过 Docker 部署 Nginx 环境的步骤和注意事项,还通过两个示例对常见的问题进行了解答。希望能够对大家有所帮助。