Dokku / Docker,如何在运行容器的文件系统中访问文件?

以前,要访问正在运行的dokku实例中的文件,我将运行:docker docker ps以获取容器ID,后跟ls /var/lib/docker/aufs/diff/<container-id>/app/...注意:I我只是使用'ls'作为示例命令。 我最终想引用一个特定的文件。

这一定是已经改变了,因为容器ID不能通过这个path访问。 该文件夹中有大量的目录,但没有与任何正在运行的容器相匹配。

在这种情况下,似乎在整个容器中安装一个卷将是矫枉过正的。 我知道我可以使用dokku run project-name ls来访问文件系统,也可以使用dokku run project-name ls docker exec <container-id> ls ,但是这两者都不能满足我的用例。

为了更全面地解释,在我的dokku项目中,我有一些.sql文件,用来引导我的postgres数据库。 这些文件通过与项目的其余部分的git push被推上去。

我希望使用postgres dokku插件来运行以下内容:

dokku postgres:connect db-name < file-name.sql

这是我以前一直在使用的:

dokku postgres:connect db-name < /var/lib/docker/aufs/diff/<container-id>/app/file-name.sql但不再有效。

对此有何想法? 我是否全部错了?

非常感谢您的任何想法。

永远不要依靠/var/lib/docker文件系统path,因为大部分存储在那里的数据都依赖于当前使用的存储驱动程序,因此可能会有所变化。

从现有的容器中获取文件

 docker exec <container> cat file.sql | dokku postgres:connect db-name 

从图像中cat文件

 docker run --rm <image> cat file.sql | dokku postgres:connect db-name 

复制现有容器中的文件

 docker cp <container>:file.sql file.sql dokku postgres:connect db-name < file.sql 

这里的例子:

dokku apps

=====>我的应用程序

DummyApp

dokku enter DummyApp

inputbash到DummyApp容器。