Docker 安装 Nginx

发布于 2022-07-09 20:28:43 更新于 2022-07-12 18:03:34

本小节中,我们将学习如何通过 Docker 快速安装 Ngnix, 并反向代理到后台的 Web 服务。

一、下载 Nginx 镜像

docker pull nginx:1.19.4

PS:小哈这里下载的是 1.19.4 版本 Nginx 镜像,你可以在 Docker Hub 上查找你想要的可用版本镜像。

命令执行成功后,通过 docker images 命令检查一下镜像是否下载成功:

检查ngnix镜像是否下载成功

二、运行 Nginx 容器

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

参数说明:

  • -p 80:80: 将容器的 80 端口映射到宿主机的 80 端口上;
  • -d: 以后台方式运行镜像;
  • --name: 指定容器的名称为 nginx;

命令执行完成后,通过 docker ps命令确认一下容器是否启动成功。

Nginx 容器运行成功后,访问 http://localhost,即可看到 Nginx 欢迎页面:

提示:访问 http://localhost 在不指定端口的情况下,默认端口号为 80

nginx访问成功

三、复制 Nginx 配置文件至宿主机

因为容器重启会丢失内部数据,因此要将需要持久化的文件挂载到宿主机中,以防数据丢失。

挂载之前,复制容器中需要持久化的相关配置文件到宿主机的指定路径下:

# 复制名称为 nginx 容器中 /etc/nginx/nginx.conf 文件夹到宿主机的 /docker/nginx 路径下,宿主机的持久化目录根据你的需要自定义路径
docker cp nginx:/etc/nginx/nginx.conf /docker/nginx
# 复制名称为 nginx 容器中 /etc/nginx/conf.d 文件到宿主机的 /docker/nginx 路径下
docker cp nginx:/etc/nginx/conf.d /docker/nginx

复制完成后,查看指定路径的配置文件,如下:

四、修改 Nginx 配置文件,添加反向代理

先通过命令 ifconfig 命令获取 docker0网卡的 ip 地址:

PS: 因为我需要反向代理的服务部署在本机的 Docker 容器中,所以用的这个 IP,如果你用的外网其他地址,可自行修改。

接下来,在 conf.d/default.config 中添加反向代理相关配置:

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 反向代理到后台 Web 服务
proxy_pass http://172.17.0.1:8090;

五、删除刚刚启动的 Nginx 容器,新启动一个

先删除之前启动的 nginx 容器:

docker rm -f nginx

完成后,执行启动 Nginx 容器命令:

docker run -d \ 
-p 80:80 \ 
--name nginx \
-v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /docker/nginx/conf.d:/etc/nginx/conf.d \
-v /docker/nginx/logs:/var/log/nginx \
nginx:1.19.4 

参数说明:

  • -p 80:80:将容器的 80 端口映射到主机的 80 端口;
  • -v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf:将容器中的 /etc/nginx/nginx.conf 文件挂载到宿主机中的 /docker/nginx/nginx.conf 文件;
  • -v /docker/nginx/conf.d:/etc/nginx/conf.d:将容器中 /etc/nginx/conf.d 目录挂载到宿主机中的 conf.d 目录下;
  • -v /docker/nginx/logs:/var/log/nginx:将容器中的 /var/log/nginx 目录挂载到宿主机中的 /docker/nginx/logs 目录下, 用以查看 Nginx 日志;

运行命令成功后,再次访问 http://localhost,即可看到反向代理到 Web 服务成功了:

访问80端口,看方向代理是否成功