一步步教你使用 docker 快速安装实用的 nginx 服务器

createh53周前 (06-04)技术教程15

nginx 是一款高性能的 web 服务器,支持反向代理、负载均衡、静态资源管理,非常实用。

使用 docker 安装 nginx 非常简便,不仅可以快速启动服务,因为容器特性,有良好的隔离性,还方便管理。

本文通过实战方式来介绍 docker 安装 nginx,并做一些实用的配置。

前面的文章详细介绍了 docker 的基本使用,不太了解这块内容的可以参考这些文章。

一、下载镜像

使用命令 docker pull nginx 来拉取最新的 nginx 镜像,如下,标签 latest 表示使用最新版本。

二、创建 nginx 配置文件

为了可以保存备份和后期迁移,需要持久化配置,所以要在宿主机创建下面3个挂载目录:

# 创建挂载目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html

将容器中的 nginx.conf 文件和 conf.d 文件夹复制到宿主机,通过下面的命令实现:

# 生成容器
docker run --name nginx -p 6020:6020 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/

下面是实操过程:

三、启动 nginx 容器

使用 docker ps 命令查看容器,先 docker stop nginx 停止,然后把已创建的删除 docker rm nginx:

启动容器,多行模式:

docker run \
-p 6021:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:latest

单行模式:

docker run -p 6021:80 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:latest

命令参数说明:

  • -p 6021:80:将容器的 80 端口映射到主机的 6021 端口
  • –name nginx:为容器指定一个名称,本次指定为名为 nginx。通过指定名称,可以使用容器名称代替容器 ID 来操作容器,如启动停止容器、设置容器的环境变量、来在多个容器之间建立网络连接。如果省略 --name 参数,则 Docker 会自动为容器分配一个名称。
  • -v:挂载文件,分别是 nginx.conf 配置文件、nginx 配置文件、nginx 日志文件、nginx 内容
  • nginx:latest:指定 nginx 运行版本
  • \:shell 命令换行

但是这样启动,当 linux 服务器重启时,nginx 就被关闭了,应该加参数 --restart=always 来保证容器在任何情况下都应自动重启:

docker run -p 6021:80 --name ftp-nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d --restart=always nginx:latest 

四、测试

浏览器访问:
http://192.168.1.200:6021/

测试修改内容,然后重启:


浏览器刷新,可以看到内容已经变了:

五、如何让 nginx 访问图片

nginx 默认访问图片会403:

user nginx 改为 user root 后重启 nginx,再次访问正常:

六、将 nginx 的内容目录挂载到 ftp 目录

本次使用 ftp 用户 ftpu1 下的目录
/home/ftp/ftpu1/nginx-html

docker run -p 6021:80 --name nginx-ftp -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/ftp/ftpu1/nginx-html:/usr/share/nginx/html -d  --restart=always nginx:latest 

浏览器访问图片:

当上传图片到目录
/home/ftp/ftpu1/nginx-html
就可以通过地址访问了。

相关文章

CentOS Nginx安装及配置

安装在 CentOS 上,可直接使用 yum 来安装 Nginxyum install nginx -y扩展: 卸载用 yum remove nginx启动安装完成后,使用 nginx 命令启动 Ng...

windows下安装nginx,并注册为系统服务,开机自启动

1.官网地址:http://nginx.org/en/download.html选择windows版的最新稳定版,如下图2.下载:点击下载链接得到:nginx-1.20.1.zip;使用解压工具进行解...

离线状态下安装 Nginx 各个模块?这篇攻略让你轻松搞定

你是不是也在为离线状态下安装 Nginx 各个模块而发愁?在互联网大厂后端开发工作中,我们常常会遇到一些特殊的网络环境,比如公司内部的离线服务器,或是处于隔离状态的测试环境。当需要在这些离线环境中安装...

后端开发必看!没网也能在 Linux 服务器上安装 Nginx 的神操作

在互联网大厂后端开发的日常工作里,不少人都遇到过 “紧急时刻”—— 需要在没有网络的 Linux 服务器上安装 Nginx 服务。望着空白的网络连接状态,一时间不知道从何下手?别着急!今天就手把手教你...

nginx如何安装使用

nginx是什么?Nginx,简称为"engine x",是一个高性能的HTTP和反向代理web服务器,同时也Nginx,简称为"engine x",是一个高性能的HT...