weixin_43674800 2024-02-20 21:59 采纳率: 93.4%
浏览 7
已结题

docker给nginx和mysql建立数据卷的不同之处,不太理解

如下的给nginx建立数据卷,/home/nginx是空目录,会发现一个问题,/usr/share/nginx/html目录原本应该有两个文件,但是建立数据卷后这个目录变成空了。


docker run  -d -p 80:80 -v /home/nginx:/usr/share/nginx/html nginx:latest

同样给mysql建立数据卷,如下,/home/mysql/data本身也是空目录,建立数据卷后会惊奇的发现,/var/lib/mysql没有被置空,数据都还在,/home/mysql/data目录也出现了mysql的数据文件


docker run  -d -p 3306:3306 -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

这就奇怪了,同样的数据卷做法,nginx目录就被置空,mysql的目录就没事,不理解

  • 写回答

3条回答 默认 最新

  • GISer Liu 2024-02-21 00:46
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    针对您描述的问题,我将分别解释为什么在使用相同的数据卷方法时,Nginx 和 MySQL 表现不同,并提供解决方案。

    1. Nginx 数据卷问题分析
      当您运行以下命令时:

      docker run -d -p 80:80 -v /home/nginx:/usr/share/nginx/html nginx:latest
      

      它将您本地的 /home/nginx 目录挂载到了 Nginx 容器内的 /usr/share/nginx/html 目录。但是,请注意,挂载数据卷时,如果容器内目录不为空,它会被卷覆盖,因此您的 /usr/share/nginx/html 目录中的内容会被挂载的内容替代。

    2. MySQL 数据卷问题分析
      当您运行以下命令时:

      docker run -d -p 3306:3306 -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
      

      它将您本地的 /home/mysql/data 目录挂载到了 MySQL 容器内的 /var/lib/mysql 目录。MySQL 镜像初始化时会检查 /var/lib/mysql 目录是否为空,如果为空,则会初始化数据库,如果不为空,则会直接使用已有的数据库文件。因此,即使您将数据卷挂载到了容器内的目录,MySQL 容器仍然能够保留其中的数据。

    3. 解决方案

      • 对于 Nginx,如果您希望在挂载数据卷的同时保留容器内原有的内容,可以将本地目录中的文件复制到挂载目录中。例如:
        cp -r /usr/share/nginx/html/* /home/nginx
        docker run -d -p 80:80 -v /home/nginx:/usr/share/nginx/html nginx:latest
        
      • 对于 MySQL,如果您希望挂载数据卷的同时保留容器内原有的数据库文件,可以在挂载之前将数据库文件复制到本地目录中,并确保该目录不为空。然后使用相同的命令启动 MySQL 容器。

        如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月14日
  • 已采纳回答 3月6日
  • 修改了问题 2月20日
  • 创建了问题 2月20日

悬赏问题

  • ¥15 鼠标右键,撤销删除 复制 移动,要怎样删除
  • ¥15 使用MATLAB进行余弦相似度计算加速
  • ¥15 服务器安装php5.6版本
  • ¥15 我想用51单片机和数码管做一个从0开始的计数表 我写了一串代码 但是放到单片机里面数码管只闪烁一下然后熄灭
  • ¥20 系统工程中,状态空间模型中状态方程的应用。请猛男来完整讲一下下面所有问题
  • ¥15 我想在WPF的Model Code中获取ViewModel Code中的一个参数
  • ¥15 arcgis处理土地利用道路 建筑 林地分类
  • ¥20 使用visual studio 工具用C++语音,调用openslsx库读取excel文件的sheet问题
  • ¥100 寻会做云闪付tn转h5支付链接的技术
  • ¥15 DockerSwarm跨节点无法访问问题