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

Dokku/Docker, how to access file in file system of running container?

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

这一定已经更改,因为容器 ID 不再可以通过此路径访问。该文件夹中有大量目录,但 none 匹配任何 运行ning 容器。

在这种情况下,为整个容器安装一个卷似乎有点过头了。我知道我可以使用 dokku run project-name lsdocker exec <container-id> ls 访问文件系统,但这些都不能满足我的用例。

为了更全面地解释一下,在我的 dokku 项目中,我有一些 .sql 文件用于 bootstrap 我的 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 文件系统路径,因为存储在那里的大部分数据都依赖于 storage driver currently in use,因此它可能会发生变化。

cat 来自现有容器的文件

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:list

=====> 我的应用

虚拟应用程序

dokku enter DummyApp

在 DummyApp 容器中输入 bash。