一步步教你使用 docker 快速安装实用的 nginx 服务器
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 就可以通过地址访问了。