我使用此命令在Windows 10上运行docker:
docker run -d -v /c/Users/tsh/docker:/usr/share/nginx/html -p 80:80 nginx
在 Users / tsh / docker 文件夹中我有简单的 index.html 文件:
<h1>Hello!</h1>
它非常有效,当我将浏览器指向Windows上的虚拟机IP时,我可以看到带有&#34; Hello!&#34;显示。 但是当我将 index.html 的内容更改为:
时<h1>Hello from docker!</h1>
网页仍然显示旧的&#34;您好!&#34;文本。
当我更改 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!
答案 0 :(得分:1)
此问题似乎与Virtualbox缓存有关。我还遇到this problem recently editing CSS,我可以通过重置Virtualbox中的图像来创建“解决方法”。但是,我只是在模糊的意义上称之为解决方法,因为每次编辑HTML文档时必须完全重启boot2docker映像并不是非常有用。
答案 1 :(得分:0)
Windows路径似乎存在一些问题。请尝试在Github问题https://github.com/docker/docker/issues/12590
中建议的解决方法在路径上使用双前导斜杠:
docker run -d -v --name mynginx //c/Users/tsh/docker:/usr/share/nginx/html -p 80:80 nginx
您可以按如下方式调试您的情况: 首先使用上面更新的运行命令将容器命名为“mynginx”
然后您可以使用以下命令进入容器:
docker exec -it mynginx /bin/bash
现在您应该在容器内部,并且可以使用以下方法验证已安装文件的内容:
cat /usr/share/nginx/html/index.html
如果此处的文件显示您的更改,并且您的浏览器仍显示旧文件,则表示该文件已缓存在链中的某个位置。 Nginx /浏览器。如果它在浏览器中缓存,您可以通过在隐身窗口中打开或按Ctrl + F5进行检查。
答案 2 :(得分:0)
我遇到了同样的问题但是使用了Apache。 Windows和Centos上的VirtualBox与docker上的httpd和php。通过更改 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 到关闭,因为
...但是在从网络安装的文件系统提供服务时必须关闭......
发送文件仍然有效。希望这会对某人有所帮助。