闪亮 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
我在我的 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