Nginx系列(一)

Nginx系列之 如何搭建Nginx

Nginx系列(一)

使用Docker安装Nginx

一、拉取镜像

sudo docker pull nginx:latest

二、创建容器

1、以挂载配置文件方式启动

(1)运行一个nginx容器,复制容器内部的配置文件。

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

  • -d 指定容器以守护进程方式在后台运行。
  • --name 指定容器名称,此处为nginx-test
  • -p 指定宿主机与容器内部端口映射(宿主机端口号:容器端口号)。
(2)在宿主机创建目录

现将nginx相关文件放在/home/sam/nginx目录下
mkdir -p /home/sam/nginx/{conf.html,logs}

(3)将容器的默认配置复制到宿主机
sudo docker cp nginx-test:/etc/nginx/nginx.conf /home/sam/nginx/conf
sudo docker cp nginx-test:/etc/nginx/conf.d /home/sam/nginx/conf
sudo docker cp nginx-test:/usr/share/nginx/html /home/sam/nginx
(4)停止并删除容器
sudo docker stop nginx-test
sudo docker rm nginx-test
(5)创建正式使用的nginx容器
sudo docker run \
-p 80:80 \
--name nginx \
--privileged \
--network=host \
--restart always \
-v /home/sam/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/sam/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/sam/nginx/log:/var/log/nginx \
-v /home/sam/nginx/html:/usr/share/nginx/html \
-d \
nginx
  • --privileged (可选)以特权模式运行容器,意味容器拥有与宿主机相同的访问权限。如出现挂载权限不够,再使用!
  • --network=host (可选)容器与宿主机共享相同的网络,可直接访问宿主机的网络和端口,容器不会分配自己的IP地址。使用该选项后,-p端口映射不会生效。
  • -v 挂载到宿主机的目录(宿主机:容器)

启动完成后,使用sudo docker ps | grep nginx命令查询容器是否正常运行,或在浏览器中输入ip+宿主机端口号是否返回welcome页面。

三、踩坑

  • 在浏览器中输入ip:80无法访问
    在某云服务器上,宿主机使用80端口,在浏览器以公网ip:80的方式访问nginx,一直访问失败。在云服务器上
    netstat -lntp | grep 80curl http://公网ip:80都是正常返回的,当时以为是端口策略没配好,一顿检查之后也没啥问题。最后问了云服务器的客服,才知道80/443/8080/8443端口是需要备案才开放...