Docker(6)-安装Nginx

前言

本人文章均引用或者复制:

公众号:

QQ群:806951874

在Docker中安装Nginx

前言

由于nginx是一个反向代理服务器,涉及到一些配置。如果你对nginx一点都不懂的话,那么,你在学习下面的内容的时候,可能就会不太懂,因为我们是要在docker中操作nginx,同时需要编辑一些配置文件。

适合对于nginx有一定了解的朋友参考使用。

下载nginx镜像

docker pull nginx

查看下载的nginx镜像

docker images

如下图:

启动nginx镜像容器

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

nginx是一个代理,端口默认是80

访问服务器

在浏览器中输入:http://192.168.56.128:80/,回车看一下效果:

在Docker中安装Nginx

出现上面的页面,说明nginx已经正常启动了。

将nginx的配置文件、日志目录映射到宿主机

在测试环境、生产环境的话,都是需要编辑一些nginx的配置的,最常见的修改就是nginx.conf文件。

将nginx的配置文件、日志目录等,映射到宿主机上进行管理维护,是很方便的,也是推荐的做法。

在宿主机中创建nginx相关目录

首先在宿主机中创建一个用于存放nginx相关文件的目录,这里我就在 /opt 目录下新建了一个 docker_nginx 的目录文件。

然后在 docker_nginx 目录下新建 conf 、log 、www 这三个目录,目录含义是:

conf:存放nginx的相关配置文件,比如 nginx.conf

log:存放nginx的日志文件

www:存放相关静态资源文件

最终的目录结构如下:

在Docker中安装Nginx

复制一份nginx.conf文件到宿主机对应的目录下:

docker cp nginx:/etc/nginx/nginx.conf /opt/docker_nginx/conf/nginx.conf

这条命令的作用,就是复制nginx的docker容器中的 /etc/nginx/nginx.conf 文件到宿主机下的 /opt/docker_nginx/conf/ 目录下。这样可以直接进行默认的配置文件的编辑。

看一下默认的nginx.conf配置文件的内容:

在Docker中安装Nginx

编辑 nginx 的配置文件:

我们暂时就修改其中的 access_log 、error_log 、root 这些基本配置。

从上图可以看到,配置文件最下面,有这样一段配置:

include /etc/nginx/conf.d/*.conf;

意思也就是引入了其他配置文件。

既然我们要在宿主机上管理nginx的配置文件,所以对于上面的include引入的文件,我们也要复制一份到对应的宿主机上。

我们进入nginx容器,去查看一下这个路径下面有哪些文件:

  • 进入nginx容器
docker exec -it e4 /bin/bash

其中的 e4 指的是容器ID的前2位字符串。

  • 查看 /etc/nginx/conf.d/ 目录

在Docker中安装Nginx

可以看到,里面有一个default.conf配置文件

  • 查看 default.conf配置文件

在Docker中安装Nginx

其中用黄色圈起来的部分,是我们要修改的内容(上面说过了,目前就先简单修改基本的配置,只是方便大家看到一下效果,至于其他的配置,可自行按照这样的步骤自行编辑)。

  • 复制一份default.conf文件到宿主机对应的目录下
docker cp nginx:/etc/nginx/conf.d/default.conf /opt/docker_nginx/conf/default.conf

查看一下目前宿主机下面的nginx配置文件情况

在Docker中安装Nginx

  • 同样的,我们也需要把nginx的默认首页文件,复制到宿主机下面
docker cp nginx:/usr/share/nginx/html/index.html /opt/docker_nginx/www/

编辑宿主机上的nginx相关配置文件

  • 首先修改 nginx.conf 配置文件,修改后结果是:

在Docker中安装Nginx

其中error_log的配置,就是我们前面在宿主机下面创建的nginx的log目录。

注意需要修改最下面的include配置,指定宿主机下面的default.conf配置文件(default/conf与nginx.conf在相同目录下,所以直接写名称即可,无需指定具体目录路径)

  • 编辑default.conf文件
vim /opt/docker_nginx/conf/default.conf

修改文件中的 access_log 以及 root 配置,效果如下

在Docker中安装Nginx

同样,access_log 以及 root 的配置,就是我们前面在宿主机下面创建的nginx的相关目录。

重启nginx容器

  • 先停止之前启动的nginx容器
docker stop e4s
  • 重启nginx容器

这次重启nginx容器的话,就不能使用一开始那种简单的run命令了,需要添加一些参数,具体命令如下:

docker run -p 80:80 --name nginx-new \
    -v /opt/docker_nginx/www:/usr/share/nginx/html \
    -v /opt/docker_nginx/log:/var/log/nginx \
    -v /opt/docker_nginx/conf/nginx.conf:/etc/nginx/conf \
    -d nginx

这里的 -v 参数的含义是,将宿主机上的目录挂载到容器中的对应目录。

“:”冒号前面是宿主机的目录,后面是容器中的目录。

有些朋友可能会不搞不明白冒号后面的容器路径是怎么来的,这里解释一下,其实很简单,就是指的是nginx的默认的日志路径、配置文件路径。

你在nginx容器中去查看一下nginx.conf以及default.conf配置文件的内容,就可以看到log和配置文件的默认存储路径了。文章上面也有截图出来nginx.conf以及default.conf的默认配置截图,可自行翻阅到上面查看。

  • 查看启动的nginx容器

  • 修改nginx默认首页内容

先看一下默认首页的样子:

在Docker中安装Nginx

我们把这个首页内容全部删除掉,加入我们自己的内容!

编辑宿主机下面的 /opt/docker_nginx/www/index.html 文件:

vim /opt/docker_nginx/www/index.html

修改之后如下:

在Docker中安装Nginx

  • 重新访问服务器域名,查看最终效果

在Docker中安装Nginx

如果页面出现中文乱码的问题,可以在 index.html 好 标签里面加入:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

最终index.html文件内容如下:

 <!DOCTYPE html>
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Welcome to nginx!</title>
 <style>
     body {
         width: 35em;
         margin: 0 auto;
         font-family: Tahoma, Verdana, Arial, sans-serif;
     }
 </style>
 </head>
 <body>
 <h1>欢迎访问!</h1>
 <p>当前nginx服务来源于Docker容器</p>
 </body>
 </html
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值