2016-08-30 20 views
0

以前、私が実行しますdokku実行中のインスタンス内のファイルにアクセスするには: docker psls /var/lib/docker/aufs/diff/<container-id>/app/... ノートに続いて、コンテナIDを取得するために:私はちょうど例のコマンドとして「LSを」使用しています。私は最終的に特定のファイルを参照したいと思っています。Dokku/Docker、実行中のコンテナのファイルシステムでファイルにアクセスする方法は?

このパスでコンテナIDにアクセスできなくなったため、これは変更されている必要があります。そのフォルダに複数のディレクトリがありますが、実行中のコンテナに一致するディレクトリはありません。

このシナリオでは、コンテナ全体のボリュームをマウントすることが過度になるようです。 dokku run project-name lsdocker exec <container-id> lsを使用してファイルシステムにアクセスできることはわかっていますが、どちらも私の使用例を満たすものではありません。

私のdokkuプロジェクトでは、私のpostgres DBのブートストラップに使用しているいくつかの.sqlファイルがあります。これらのファイルは、残りのプロジェクトと一緒に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が、もはや作品ということ。

これについてのご意見はありますか?私はこれについてすべて間違っているのですか?

ありがとうございました。

答えて

1

/var/lib/dockerファイルシステムのパスに依存しないでください。保存されるデータの大部分はstorage driver currently in useに依存するため、変更される可能性があります。

catここでは既存のコンテナ

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

驚くばかりです。本当にありがとう。これは非常に意味があります。私のUNIXの経験は明らかに限られています。あなたの説明は、 'dokku postgres:connect db-name ThePuzzleMaster

+0

問題ありません。Unixのコマンドラインは[すべてのパイプについて](http://www.linfo.org/pipe.html)と[redirection](http://www.linfo.org/redirection.html)です。 '<'はファイルをコマンドの標準入力にリダイレクトするだけです。 – Matt

1

から画像

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

コピーファイルの例から、既存のコンテナ

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

catファイルからファイル:

dokku apps

=====>マイアプリ

DummyApp

dokku enter DummyApp

DummyAppコンテナにはbashを入力します。

関連する問題