Docker-nginx数据卷挂载

数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。

以Nginx为例,我们知道Nginx中有两个关键的目录:

  • html:放置一些静态资源
  • conf:放置配置文件
    如果我们要让Nginx代理我们的静态资源,最好是放到html目录;如果我们要修改Nginx的配置,最好是找到conf下的nginx.conf文件。
    但遗憾的是,容器运行的Nginx所有的文件都在容器内部。所以我们必须利用数据卷将两个目录与宿主机目录关联,方便我们操作。如图:

    在上图中:
  • 我们创建了两个数据卷:conf、html
  • Nginx容器内部的conf目录和html目录分别与两个数据卷关联。
  • 而数据卷conf和html分别指向了宿主机的/var/lib/docker/volumes/conf/_data目录和/var/lib/docker/volumes/html/_data目录
    这样以来,容器内的conf和html目录就 与宿主机的conf和html目录关联起来,我们称为挂载。此时,我们操作宿主机的/var/lib/docker/volumes/html/_data就是在操作容器内的/usr/share/nginx/html/_data目录。只要我们将静态资源放入宿主机对应目录,就可以被Nginx代理了。

    利用数据卷挂载nginx步骤:

1. 创建数据卷

docker volume create nginx_html

2. 查询数据卷位置

docker volume inspect nginx_html

3.创建容器并指定数据卷,注意通过 -v 参数来指定数据卷

docker run -d --name nginx81 -p 81:80 -v nginx_html:/usr/share/nginx/html nginx

4.在/var/lib/docker/volumes/nginx_html/_data/ 目录下面添加一个静态文件index.html,文件里填写Hello world

5.运行http://服务器ip:81/

效果图:

相关推荐
AAA修煤气灶刘哥5 分钟前
ES 地理查询玩明白,产品要的 “附近的店” 再也难不倒我!(附 DSL+Java 实战)
java·后端·elasticsearch
十八旬23 分钟前
苍穹外卖项目实战(day-5完整版)-记录实战教程及问题的解决方法
java·开发语言·spring boot·redis·mysql
m0_7492999538 分钟前
Nginx主配置文件
java·服务器·nginx
╭╰40239 分钟前
苍穹外卖优化-续
java·spring·mybatis
金銀銅鐵1 小时前
[Java] 枚举常量的精确类型一定是当前枚举类型吗?
java·后端
邂逅星河浪漫1 小时前
Spring Boot常用注解-详细解析+示例
java·spring boot·后端·注解
青鱼入云1 小时前
java面试中经常会问到的mysql问题有哪些(基础版)
java·mysql·面试
Darenm1111 小时前
python进程,线程与协程
java·开发语言
剑客的茶馆1 小时前
新服务器从0开始搭配Ubuntu+Conda+Docker+Dify
服务器·ubuntu·docker·conda·dify
凯哥Java1 小时前
适应新环境:Trae编辑器下的IDEA快捷键定制
java·编辑器·intellij-idea