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容器。