Docker 玩转 Nginx
Docker安装Nginx
1拉取镜像
docker pull nginx
2启动镜像
docker run --name mynginx -p 8001:80 -d nginx
3查看镜像状态
docker ps
发现容器正常运行,访问也正常。
修改Nginx卷挂载
1创建挂在目录文件
mkdir -p /root/nginx/www /root/nginx/logs /root/nginx/conf
2配置文件拷贝
把正在运行的nginx配置文件copy出来
docker cp 402a6c5357fc:/etc/nginx/nginx.conf /root/nginx/conf
3删除已有的容器
[root@VM-24-14-centos conf]# docker stop 402
402
[root@VM-24-14-centos conf]# docker rm 402
402
4容器启动
docker run -d -p 8001:80 --name mynginx \
-v /root/nginx/www:/usr/share/nginx/html \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/logs:/var/log/nginx nginx
5创建页面
因为www的卷挂载已经把容器内部原有的index.html覆盖,所以直接访会报错,随便找一个index.html放进刚创建的www包里面再访问
访问成功
Docker容器下Nginx配置多端口
因为创建docker容器的时候 默认的网络是采用桥接的模式进行的,所以开放的端口是通过-p 进行暴漏,而且性能也有所下降,这里我们可以使用host模式,这样同步同步更改的端口也不需要指定-p进行暴漏
1删除原有的容器
# 停止容器
docker stop 73d1a1d24e1d
# 删除容器
docker rm 73d1a1d24e1d
2创建容器
这里不用指定端口,增加--netwrok=host
docker run -d --name mynginx \
-v /root/nginx/www:/usr/share/nginx/html \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/logs:/var/log/nginx --network=host nginx
3修改nginx配置文件
修改root/nginx/conf 目录下的配置文件
server {
listen 81;
server_name localhost;
#这里填写-v 挂在www的容器地址
root /usr/share/nginx/html;
index cc.html;
}
重启容器
docker restart eb343ec08458
我们发现端口已经暴漏出来了
然后我们在www文件下放一个cc.html然后访问发现已经可以了
配置Nginx静态资源
修改配置文件
location /static/ {
alias /usr/share/nginx/html/static/;
autoindex on;
}
把静态资源放置在/www/static/(这里的路径自行修改) 目录下 然后重启容器访问