闪亮 docker 图像中的文件如果我在主机中更改该文件则不会更改

File in Shiny docker image do not change if I change that file in host

我在我的 Ubuntu 机器上创建了一个 Docker 我闪亮的应用程序图像。

此应用程序使用放置在主机(不在容器内)的某个文件夹中的少量文件。我把它们放在容器外面,因为它们很大。

现在我 运行 下面的代码来获取我的图像并且 运行ning

docker run -d -v /opt/lampp/htdocs/www:/www:rw --restart=always -d -p 8383:8383 app

有了这个,我期望如果我对主机中 '/opt/lampp/htdocs/www' 中的任何文件进行任何更改,那么它会自动反映到容器中的 www 文件夹中。

但这并没有发生。为什么会这样?每次更改主机中 '/opt/lampp/htdocs/www' 中的任何文件时,我都需要重建我的应用程序映像吗?

我也尝试将文件直接从主机复制到容器,如下所示,但仍然没有看到任何变化反映在我闪亮的应用程序docker图像中

docker exec -i 9498f0e1c5066f060c0e9439faa744cc39208ee27fc0dbe0d54075c683748137 bash -c 'cat > /www/aaa.csv' < /opt/lampp/htdocs/www/aaa.csv

您的副本将无法工作,因为您的 exec 命令之后的所有内容都引用了容器中的文件。

你应该使用:

docker cp /opt/lampp/htdocs/www/aaa.csv YOUR_CONTAINER_NAME:/www/aaa.csv

我真的不知道为什么你的挂载不起作用,你在日志中看到了什么吗?

最后,您可以从 docker run 命令中删除第一个 -d