自制nginx实现卷共享


前段时间写过一篇博客,其中用yum安装nginx之后,容器内部的nginx服务的index.html会自动与宿主机中的index.html文件形成映射关系,而由于宿主机中没有该目录下的文件,所以会导致403错误。现在在容器内部对nginx服务进行配置

配置阿里云的镜像

#拉取阿里云镜像的repo文件
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
#生成缓存
yum makecache

阿里云官网配置操作

没有卷共享功能的镜像

Dockerfile文件

FROM centos:latest
RUN rm -rf /etc/yum.repos.d/*
ADD yum.repos.d /etc/yum.repos.d/
RUN yum clean all
RUN [ "yum", "update", "-y"] &&  [ "yum", "install", "-y", "nginx"]
ADD nginx/global.conf /etc/nginx/conf.d/
ADD nginx/nginx.conf /etc/nginx/nginx.conf
EXPOSE 80

nginx配置文件内容

global.conf和nginx.conf文件

global.conf内容如下:

server {
        listen 0.0.0.0:80;
        server_name   _;

        root   /usr/share/nginx/html/;
        index  index.html index.xml;

        access_log /var/log/nginx/default_access.log;
        error_log  /var/log/nginx/default_error.log;
}

nginx.conf文件内容如下:

worker_processes 4;
pid /run/nginx.pid;
daemon off;

events { }

http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
        access_log /var/log/nginx/access.log;
        error_log  /var/log/nginx/error.log;
        gzip on;
        gzip_disable "msie6";
        include /etc/nginx/conf.d/*.conf;
}

制作nignx镜像

在以上准备工作都做好之后,就可以开始nginx镜像的制作了

docker build -t nginx1 .

基于该镜像启动容器:

docker run -d -p 8082:80 nginx1 

在浏览器中输入本机地址192.168.225.145:8082,可以看到页面如下,192.168.225.145是宿主机的ip地址:
在这里插入图片描述

有卷共享功能的镜像

Dockerfile文件

FROM centos:latest
RUN rm -rf /etc/yum.repos.d/*
ADD yum.repos.d /etc/yum.repos.d/
RUN yum clean all
RUN [ "yum", "update", "-y"]
RUN [ "yum", "install", "nginx", "-y"]
VOLUME "/usr/share/nginx/html"
ADD nginx/global.conf /etc/nginx/conf.d/
ADD nginx/nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx"]

配置文件

1.global.conf文件内容如下:

server {
        listen 0.0.0.0:80;
        server_name   _;

        root   /usr/share/nginx/html;
        index  index.html index.xml;

        access_log /var/log/nginx/default_access.log;
        error_log  /var/log/nginx/default_error.log;
}

2.nginx.conf文件内容如下:

user root;
worker_processes 4;
pid /run/nginx.pid;
daemon off;

events { }

http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
        access_log /var/log/nginx/access.log;
        error_log  /var/log/nginx/error.log;
        gzip on;
        gzip_disable "msie6";
        include /etc/nginx/conf.d/*.conf;
}

制作镜像

docker build -t voulumenginx1 .

检查

docker run -v /etc/html1/:/usr/share/nginx/html -p :8088:80 -d --name "hv"  voulumenginx1 

这里指定将宿主机的/etc/html1/目录挂载到/usr/share/nginx/html上面,因此能实现卷共享的功能
先看/etc/html1/目录下是否有内容
在这里插入图片描述
发现,此时该目录下没有首页内容,并且登录网址,发现如下界面,显示为403错误,即没有首页或者首页没有访问权限。
在这里插入图片描述

新建index.html文件

vim index.html

内容如下:
在这里插入图片描述

再去访问网页:
在这里插入图片描述

此时进入容器内部:

[root@docker-learning-centos7 ~]# docker exec -it hv /bin/bash
[root@af2daf5dd8cc /]# cd /usr/share/nginx/html/

在这里插入图片描述

卷共享

新启动容器,使用–volumes-from选项,将指定容器里面的所有卷都加入到新创建的容器里。

[root@docker-learning-centos7 html1]# docker run -d -p 8089:80 --volumes-from hv voulumenginx1

在这里插入图片描述

访问该网址
在这里插入图片描述
至此,卷共享已经实现了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值