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 80
和curl http://公网ip:80
都是正常返回的,当时以为是端口策略没配好,一顿检查之后也没啥问题。最后问了云服务器的客服,才知道80/443/8080/8443
端口是需要备案才开放...