質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1445閲覧

Dockerから起動したJupyuterノートのディレクトリがわからない

YoshinagaK

総合スコア21

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2018/05/02 05:22

前提・実現したいこと

Bempp(https://bempp.com/)というツールを使おうとしています。DockerからインストールしてJupyterノートブックをブラウザから走らせて使います。インストールは成功して、Bemppの例題もいくつかできています。

Bemppでファイルを読み込みたいと思うのですが、どういうディレクトリ構造になっているかがわからず読み込めないでいます。

Bemppのファイル読み込みのコマンド
grid = bempp.api.import_grid('c:\gmsh\test.msh')
を使うと以下のエラーメッセージが出ます。

発生している問題・エラーメッセージ

IOError Traceback (most recent call last)
<ipython-input-6-f7b8a7b8d8bf> in <module>()
----> 1 grid = bempp.api.import_grid('c:\gmsh\test.msh')

/usr/lib/python2.7/dist-packages/bempp/api/file_interfaces/general_interface.py in import_grid(file_name, return_id_maps)
205 import_data_sets
206
--> 207 data_sets = import_data_sets(file_name)
208 elif extension == '.json':
209 # Format is JSON

/usr/lib/python2.7/dist-packages/bempp/api/file_interfaces/gmsh.py in import_data_sets(file_name)
434 (all_vertices, all_vertex_ids,
435 elements_list, element_ids_list, domain_indices_list) =
--> 436 parse_gmsh(file_name)
437 grid_structure = create_grid_structure(all_vertices, all_vertex_ids,
438 elements_list, element_ids_list, domain_indices_list)

/usr/lib/python2.7/dist-packages/bempp/api/file_interfaces/gmsh.py in parse_gmsh(file_name)
102 from IPython import embed
103
--> 104 with open(file_name, 'rb') as f:
105 while True:
106 s = f.readline().rstrip().decode('utf-8')

IOError: [Errno 2] No such file or directory: 'c:\gmsh\test.msh'

試したこと

Jupyterノートでpwdコマンドで
u'/home/bempp/work'
と回答されます。

補足情報(FW/ツールのバージョンなど)

読み込もうとしたのはgmshのメッシュ形式ファイルです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

c: ドライブがあるようですので、Windows を使用しているという想定で回答します。

Jupyter Notebook のサーバーは Docker のコンテナ内で実行されます。コンテナは Linux の仮想化環境の中で動いていますので、普通に docker run しただけですと、Jupyter Notebook のサーバーから、Windows 上のフォルダ・ファイルにアクセスできません。

以下のようにして Windows のフォルダを bempp の Docker コンテナと共有します。

こちらの記事を参考に、Docker の共有ドライブ(Shared Drives)を設定します。C ドライブの Share にチェックマークをつけてください。

次に、もし bempp の Docker コンテナを実行中なら停止します。

ただし、停止すると Jupyter Notebook に保存したファイルは消えてしまいますので、停止前に Docker コンテナから Windows へそれらのファイルをコピーしておきます。docker ps コマンドでコンテナの ID を調べます(ID は docker run するごとに新しい番号が振られます)

> docker ps CONTAINER ID IMAGE COMMAND... 7602ccbccd90 bempp/notebook "tini -- /usr/local/b"...

上の例ではコンテナ ID は 7602ccbccd90 でした。docker cp コマンドでコンテナ内の Jupyter Notebook のデータディレクトリを Windows へコピーします。

> docker cp 7602ccbccd90:/home/bmpp/work .

これで work ディレクトリが Windows のカレントディレクトリに保存されます。

コンテナを停止しましょう。docker run したときのターミナルが開いているなら、Control + C を押して、y を答えます。ターミナルを開いていないなら docker stop コンテナID コマンドで停止します。

Windows のフォルダを共有する設定(-v オプション)を追加して bempp の Docker コンテナを実行します。

> docker run -it --rm -v c:/gmsh:/home/bempp/work bempp/hotebook

これで Windows の c:/gmsh フォルダが、Jupyter Notebook のサーバー側の /home/bempp/work にマウント(共有)されます。

ウェブブラウザから Jupyter Notebook にアクセスして、grid = bempp.api.import_grid('/home/bempp/work/test.msh') または grid = bempp.api.import_grid('./test.msh') のようにすると、ファイルにアクセスできるはずです。

また上記のように -v オプションを指定した場合は、Jupyter Notebook に保存したファイルが全て c:/gmsh フォルダに書かれますので、コンテナを停止してもそれらのファイルが消えることはありません。

投稿2018/05/02 07:41

tatsuya6502

総合スコア2035

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YoshinagaK

2018/05/02 08:06

ありがとうございます。一つ前の回答を受けて解決できましたが、詳しい解説をありがとうございます。
YoshinagaK

2018/05/02 21:16

Bemppは使われていますか。こちらの使い方もわからなくて困っています。Documentsは読んだのですが、そこから自分で例題を解くところまでなかなか持って来れません。ユーザーズマニュアルや例題集のようなものはないのでしょうか。
tatsuya6502

2018/05/03 00:53

私はBemppは使ってないので、ちょっとわからないです。ごめんなさい
guest

0

ベストアンサー

docker cpなどでファイルをイメージ側に送る必要があったような・・・

https://stackoverflow.com/a/31971697/8499046

当方Docker初心者レベルです。

投稿2018/05/02 05:36

tachikoma

総合スコア3601

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YoshinagaK

2018/05/02 06:52

ありがとうございます。コンテナにコピーすることで解決できました。
YoshinagaK

2018/05/02 06:55

以下の方法でコピーできました。 Bempp実行中に他のコマンドプロンプトでdocker psでコンテナIDを取得。 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 45c479f23ccd bempp/notebook "tini -- /usr/local/…" 2 hours ago Up 2 hours 0.0.0.0:8888->8888/tcp goofy_lovelace 以下のコマンドでBemppへのコピーができた。 docker cp test.msh 45c479f23ccd:/home/bempp/work
tachikoma

2018/05/02 14:00

詳細ありがとうございます。自分もチャレンジしてみます^^;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問