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 ls
和 docker 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。
以前,要访问 运行ning dokku 实例中的文件,我会 运行:
docker ps
获取容器 ID,后跟
ls /var/lib/docker/aufs/diff/<container-id>/app/...
注意:我只是使用 'ls' 作为示例命令。我最终想引用一个特定的文件。
这一定已经更改,因为容器 ID 不再可以通过此路径访问。该文件夹中有大量目录,但 none 匹配任何 运行ning 容器。
在这种情况下,为整个容器安装一个卷似乎有点过头了。我知道我可以使用 dokku run project-name ls
和 docker 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。