Docker容器内无法查看Flask应用创建的新JSON文件问题
嗨,我来帮你理清这个问题的来龙去脉~
问题核心原因
你遇到的情况完全是Docker卷挂载机制的差异导致的:
- 第一个启动容器的命令里,你用了
-v $PWD/cw_rules/signals/signals_oas3.0:/cw_rules/signals/signals_oas3.0参数,这相当于把你本地机器当前目录下的cw_rules/signals/signals_oas3.0文件夹,和容器内的同路径文件夹做了双向绑定。Flask应用创建的JSON文件其实是直接写到了你本地的物理文件系统里,容器只是通过挂载映射“共享”了这个目录的内容。 - 而第二个启动shell的命令
sudo docker run -it <image> /bin/sh没有添加这个挂载参数,此时容器里的/cw_rules/signals/signals_oas3.0是镜像本身自带的目录,和你本地的文件夹没有任何关联,自然看不到之前创建的文件。
解决方法
如果想在容器shell里看到那些本地创建的文件,只要在启动shell容器时加上同样的挂载参数就行:
sudo docker run -it -v $PWD/cw_rules/signals/signals_oas3.0:/cw_rules/signals/signals_oas3.0 <image> /bin/sh
执行这个命令进入容器后,再访问/cw_rules/signals/signals_oas3.0目录,就能看到本地物理文件系统里的所有文件了。
小提醒:如果是在不同终端窗口执行命令,要确保$PWD指向的是同一个本地目录哦,不然挂载路径不匹配也会出现看不到文件的情况~
内容的提问来源于stack exchange,提问作者kakoli
相关产品推荐
相关产品推荐

