docker运行nginx容器并挂载数据卷

 更新时间:2025年03月18日 10:03:56   作者:会飞的爱迪生  
本文主要介绍了docker运行nginx容器,并通过挂载目录将容器与宿主机的数据进行共享和统一管理,具有一定的参考价值,感兴趣的可以了解一下

容器数据卷(docker持久化):

类似挂载或共享存储的功能,将容器的目录映射到宿主机目录上,使之数据共享并实现统一管理。防止容器被删除数据丢失。

挂载目录注意事项:

如果直接启动nginx容器并指定挂在目录,会出现将容器中的目录清空的现象,所以需要先确认容器中nginx的目录结构,然后将容器中nginx的相关目录或文件拷贝下来再启动容器。

通过-v指定挂载目录时会以宿主机的目录为标准,如果宿主机的目录为空那么启动容器后容器的目录也是空的。

1、先启动一个nginx容器并查看nginx的相关目录和文件

(1) 启动nginx容器  

# docker container run -d --name="testnginx" nginx:latest

(2) 查看nginx相关目录和文件

# docker container exec testnginx  ls /etc/nginx/nginx.conf   # 主配置文件路径
/etc/nginx/nginx.conf

# docker container exec testnginx  ls /etc/nginx/conf.d       # 默认配置文件路径
default.conf

# docker container exec testnginx  ls /usr/share/nginx/html   # 站点目录文件路径
50x.html
index.html

# docker container exec testnginx  ls /var/log/nginx          # 日志文件路径
access.log
error.log

2、宿主机创建数据卷,并将容器中的文件或目录拷贝到数据卷

(1) 创建主配置文件路径并拷贝配置文件到宿主机

# mkdir /data/nginx/conf -p     # 主配置文件路径
# docker container cp testnginx:/etc/nginx/nginx.conf /data/nginx/conf/

(2) 将容器中的conf.d目录拷贝到宿主机中

# docker container cp  testnginx:/etc/nginx/conf.d /data/nginx/

(3) 将容器中站点目录拷贝到宿主机

# docker container cp  testnginx:/usr/share/nginx/html  /data/nginx/

(4) 创建日志路径(日志文件就不需要拷贝了)

# mkdir /data/nginx/logs

3、运行nginx容器

挂载文件时,必须是一个存在的文件或目录,比如nginx.conf,如果修改宿主机的nginx.conf,需要重启容器才生效
# docker container run -d --restart=always -p 8000:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/conf.d:/etc/nginx/conf.d -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/logs:/var/log/nginx --name="nginx01" nginx:latest

--------------------------------
docker container run -d   # 后台运行nginx
-p 8000:80                # 端口映射
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf    # 映射nginx.conf配置文件,如果不指定宿主机挂载目录docker会自动创建一个通过docker inspect查看
-v /data/nginx/conf.d:/etc/nginx/conf.d                 # 映射conf.d目录
-v /data/nginx/html:/usr/share/nginx/html               # 映射html目录
-v /data/nginx/logs:/var/log/nginx                      # 映射日志目录    

4、修改数据卷中的内容

# cd /data/nginx/html/
# echo "hello nginx" > index.html

[root@docker-106 nginx]# cat /data/nginx/conf.d/test.conf 
server {
    listen       80;
    server_name  www.test.com;
    access_log  /var/log/nginx/host.access.log  main;
    
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
}

5、重启容器并访问nginx服务

# docker container restart nginx01
# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
acf1b99cdabc        nginx:latest        "/docker-entrypoin..."   16 minutes ago      Up 4 seconds        0.0.0.0:8000->80/tcp   nginx01

# curl 192.168.1.106:8000
hello nginx        

到此这篇关于docker运行nginx容器并挂载数据卷的文章就介绍到这了,更多相关docker运行nginx挂载数据卷内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • 一次dockerfile的循环依赖错误实战记录

    一次dockerfile的循环依赖错误实战记录

    Dockerfile 是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建,这篇文章主要介绍了使用Docker多阶段构建时遇到的循环依赖问题及其解决方法,,需要的朋友可以参考下
    2025-02-02
  • docker使用storage出现Exit导致文件无法上传服务器的问题及解决方案

    docker使用storage出现Exit导致文件无法上传服务器的问题及解决方案

    这篇文章主要介绍了docker使用storage出现Exit导致文件无法上传服务器解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Docker安装MongoDB并使用Navicat连接的操作方法

    Docker安装MongoDB并使用Navicat连接的操作方法

    MongoDB是一个基于分布式文件存储的数据库,MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,这篇文章主要介绍了Docker安装MongoDB并使用Navicat连接,需要的朋友可以参考下
    2022-10-10
  • 将修改后的Docker容器保存为镜像并导出为tar文件的流程步骤

    将修改后的Docker容器保存为镜像并导出为tar文件的流程步骤

    在使用Docker的过程中,我们经常需要对现有的容器进行一些修改,然后希望将这些更改保存下来以便日后使用或者分享给他人,这篇文章将会教你如何一步步地将修改后的容器保存为一个新的Docker镜像,并将其导出为一个.tar文件,需要的朋友可以参考下
    2026-01-01
  • Docker实现同Ip网段联通的实现

    Docker实现同Ip网段联通的实现

    这篇文章主要介绍了Docker实现同Ip网段联通的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • docker默认存储路径修改方法总结

    docker默认存储路径修改方法总结

    docker默认存储路径是/var/lib/docker,占用服务器根分区,容易导致磁盘空间占满,下面这篇文章主要给大家介绍了关于docker默认存储路径修改方法的相关资料,需要的朋友可以参考下
    2023-10-10
  • 使用Docker Compose创建LAMP环境的详细步骤

    使用Docker Compose创建LAMP环境的详细步骤

    现如今,通过 Docker 容器化部署环境已经逐渐成为主流,特别是在部署像 LAMP 这样的复杂环境时,本教程旨在带您完成使用 Docker-Compose 建立 LAMP 环境的整个过程,同时还包括定制 PHP 环境的步骤,需要的朋友可以参考下
    2024-12-12
  • Docker 环境 Nacos2 MySQL8的详细操作

    Docker 环境 Nacos2 MySQL8的详细操作

    本文介绍 docker 环境下安装并单机运行 Nacos2,使用 docker 环境下的 MySQL 8 存储数据 ,对Docker 环境 Nacos2 MySQL8相关知识感兴趣的朋友跟随小编一起看看吧
    2022-09-09
  • Docker部署SpringBoot项目,本地运行正常,部署至服务器报错zip file closed问题

    Docker部署SpringBoot项目,本地运行正常,部署至服务器报错zip file close

    这篇文章主要介绍了Docker部署SpringBoot项目,本地运行正常,部署至服务器报错zip file closed问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • kubernetes对象Volume用法详解

    kubernetes对象Volume用法详解

    在本篇文章里小编给大家整理的是关于kubernetes对象Volume用法以及相关知识点,需要的朋友们学习下。
    2019-06-06

最新评论