docker搭建nginx文件服务器

1、拉取nginx镜像
搜索nginx镜像:

[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker search nginx
NAME                          DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                              Official build of Nginx.                        12749               [OK]                              

拉取nginx镜像:

[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker pull nginx

这里我们不指定版本,直接拉取最新的latest
查看已拉取的镜像:

[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              a1523e859360        7 days ago          127MB

2、创建nginx容器
创建nginx容器:

[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker run --name nginx -p 8080:80 -v /data/docker_v/nginx/www:/home/www -d nginx

其中:
–name nginx 容器的名称为nginx
-p 8080:80 将主机8080端口映射到容器nginx的80端口
-v /data/docker_v/nginx/www:/home/www 将主机/data/docker_v/nginx/www目录映射到容器/home/www目录。这里/home/www是后面nginx配置文件中我们要指定的存放静态文件的位置,映射到主机目录后,直接将静态文件放到主机目录即可。
-d 后台启动
nginx 创建容器使用的镜像及版本

查看创建好的容器实例:

[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS 
1dae5d2ffa61        nginx               "nginx -g 'daemon of…"   6 days ago          Up 6 days           0.0.0.0:8080->80/tcp                                                               nginx

安装成功,浏览器输入地址:http://192.168.2.130:8080/,可以看到nginx版本信息。

3、nginx配置文件挂载到主机
进入nginx容器内部:

[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker exec -it nginx bash
root@1dae5d2ffa61:/# cd /etc/nginx/
root@1dae5d2ffa61:/etc/nginx# ls
conf.d fastcgi_params koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params uwsgi_params  win-utf
root@1dae5d2ffa61:/etc/nginx# cd conf.d/
root@1dae5d2ffa61:/etc/nginx/conf.d# ls
default.conf

我们看到nginx的默认配置文件为nginx.conf,但是我们不建议将个性化配置直接放在此文件中,而是在conf.d目录下创建*.conf文件,将配置信息放在这里。
我们看到conf.d下已经有一个default.conf文件,我们直接基于此文件进行配置。

为了配置管理方便,我们将conf.d目录下的配置文件直接映射到主机目录。
先将default.conf从容器拷贝到主机:

[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker cp 1dae5d2ffa61:/etc/nginx/conf.d/default.conf  /data/docker_v/nginx/conf.d/default.conf

1dae5d2ffa61 容器id
/data/docker_v/nginx/conf.d/default.conf 主机配置文件位置

删除之前创建的容器,在之前的命令中加入
-v /data/docker_v/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf,重新创建容器:

[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker run --name nginx -p 8080:80 -v /data/docker_v/nginx/www:/home/www -v /data/docker_v/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx

到此,nginx的配置文件,静态文件目录都映射到了主机,下面我们直接去配置nginx。

4、配置nginx
打开主机上的nginx配置文件/data/docker_v/nginx/conf.d/default.conf,配置静态文件目录:

server {
    listen       80;
    server_name  localhost;
    
     location / {
        #root   /usr/share/nginx/html;	
 	root /home/www;
        index  index.html index.htm;
    }
    ...
}

将location下的root后面地址修改为/home/www即可。这个/home/www是容器中存放静态文件的地址,没有的话先创建。
前面我们创建容器的时候已将/home/www映射到主机目录/data/docker_v/nginx/www,后续我们操作静态文件只需在此主机目录下即可。
重启nginx容器,我们在主机/data/docker_v/nginx/www目录下放一张1.png的图片,然后浏览器访问这个图片,看是否配置成功。
浏览器上输入地址:http://192.168.2.130:8080/1.png,能看到说明配置成功。

5、题外话
这里稍微提一下nginx文件服务搭建好后,怎么跟tomcat结合提供文件上传、下载、浏览服务。
docker容器环境中,tomcat也是一个单独的容器,文件经浏览器上传后保存在tomcat的容器中,nginx在另外一个容器中,并不能直接访问到。

只要我们能让tomcat上传下载目录和nginx的静态文件目录在同一个目录位置,就能实现。

怎么实现?

直接将两个容器操作的目录挂载到同一个主机目录就行了,是不是很简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值