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 环境的步骤和注意事项,还通过两个示例对常见的问题进行了解答。希望能够对大家有所帮助。