启动容器的时候使用-v 指定本地文件挂载到容器里面,导致容器中该目录底下所有文件全部丢失,个人感觉应该是文件夹覆盖了,求助大神该如何解决,下面贴上启动代码docker run --name bank -d -p 8996:8080 -v /home/bank_home/bank.json:/usr/local/tomcat/webapps/bank/WEB-INF/classes/  bank:1.0.4下图为该容器正常启动后目录
docker run --name bank -d -p 8996:8080  bank:1.0.4

解决方案 »

  1.   

    你好,你执行错误命令导致的。你写的是文件挂在到目录,这个是错误的,应该是目录挂在到目录,命令:docker run --name bank -d -p 8996:8080 -v /home/bank_home/:/usr/local/tomcat/webapps/bank/WEB-INF/classes/  bank:1.0.4,在你的命令里去掉bank.json。谢谢
      

  2.   

    首先,-v 卷的映射,相当于主机的目录挂载到容器对应目录上,类似于我们主机分区文件系统的挂载,会覆盖容器中原目录的文件;
    然后,你上边的问题是由于挂载时,命令中路径的错误,把bank.json去掉,注意是路径的映射,不是文件。正确命令:docker run --name bank -d -p 8996:8080 -v /home/bank_home/:/usr/local/tomcat/webapps/bank/WEB-INF/classes/  bank:1.0.4 
      

  3.   

    把bank.json去掉
      

  4.   

    感觉不是你们说的这个问题,这种方法我之前也试过,最后找到原因,docker启动的时候是先挂载目录然后启动tomcat,挂载的时候自动创建了bank目录,然后启动tomcat的时候解压bank.war,因为存在了相同了目录,就无法正常解压了
      

  5.   

    docker启动的时候是先挂载目录然后启动tomcat,挂载的时候自动创建了bank目录,然后启动tomcat的时候解压bank.war,因为存在了相同了目录,就无法正常解压了