在Windows上的Docker:安装卷中的数据不会更新

我用这个命令在Windows 10上运行docker:

docker run -d -v /c/Users/tsh/docker:/usr/share/nginx/html -p 80:80 nginx 

Inside Users / tsh / docker文件夹我有简单的index.html文件:

 <h1>Hello!</h1> 

它工作得很好,当我把我的浏览器在windows上指向virtualbox IP时,我可以看到带有“Hello!”的网页。 显示。 但是,当我将index.html的内容更改为如下所示:

 <h1>Hello from docker!</h1> 

网页仍然显示我的旧“你好!” 文本。

是否有可能当我改变index.html网页上的数据也改变了?


UPD:

 docker run -it -v //c/Users/tsh/docker:/usr/share/nginx/html -p 80:80 nginx bash root@ae5fc6b6126a:/# cd /usr/share/nginx/html root@ae5fc6b6126a:/usr/share/nginx/html# cat index.html <h1>Hello from docker!</h1> root@ae5fc6b6126a:/usr/share/nginx/html# 

容器查看新数据<h1>Hello from docker!</h1>但页面仍显示旧的Hello!

此问题似乎与Virtualboxcaching有关。 我也遇到了这个问题,最近编辑CSS ,我能够通过重置Virtualbox中的图像来创build一个“解决方法”。 但是,我只是在一个模糊的意义上称之为解决方法,因为每次编辑HTML文档时必须完全重新引导boot2docker映像并不是非常有用。

似乎有一些Windowspath的问题。 请尝试在Github问题中build议的解决方法https://github.com/docker/docker/issues/12590

在path上使用双引号斜杠:

docker run -d -v --name mynginx //c/Users/tsh/docker:/usr/share/nginx/html -p 80:80 nginx

您可以按照以下方式debugging您的情况:首先使用上述更新的运行命令将您的容器命名为“mynginx”

然后你可以使用以下命令进入容器: docker exec -it mynginx /bin/bash

现在你应该在容器中,在那里你可以使用下面的命令validation已经装载的文件的内容:

cat /usr/share/nginx/html/index.html

如果这里的文件显示你的改变,而你的浏览器仍然显示旧文件,这意味着文件被caching在链中的某个地方。 Nginx /浏览器。 如果它被caching在浏览器中,您可以通过在隐身窗口中打开或按Ctrl + F5进行检查。

我有同样的问题,但与Apache。 Windows上的VirtualBox以及在docker上使用httpd和php的Centos。 通过更改httpd.conf参数来修复问题

 # # EnableMMAP and EnableSendfile: On systems that support it, # memory-mapping or the sendfile syscall may be used to deliver # files. This usually improves server performance, but must # be turned off when serving from networked-mounted # filesystems or if support for these functions is otherwise # broken on your system. # Defaults if commented: EnableMMAP On, EnableSendfile Off # #EnableMMAP off EnableSendfile off 

EnableSendfile closures,因为

…但是从联网的文件系统提供服务时必须closures…

发送文件仍然有效。 希望这会帮助别人。