Windows上的Docker:已安装卷中的数据未更新

时间:2016-02-03 21:15:03

标签: docker boot2docker

我使用此命令在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!

3 个答案:

答案 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 关闭,因为

  

...但是在从网络安装的文件系统提供服务时必须关闭......

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