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

时间:2016-08-30 00:11:19

标签: postgresql ubuntu docker dokku

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

这必须已更改,因为无法再通过此路径访问容器ID。该文件夹中有大量的目录,但没有一个与任何正在运行的容器相匹配。

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

为了更全面地解释一下,在我的dokku项目中,我有一些.sql文件,我用它来引导我的postgres DB。这些文件通过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但不再有效。

对此有何想法?我错了吗?

非常感谢您的任何想法。

2 个答案:

答案 0 :(得分:2)

这里的例子:

dokku apps

=====&GT;我的应用

DummyApp

dokku enter DummyApp

将bash输入DummyApp容器。

答案 1 :(得分:1)

永远不要依赖/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