🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Docker

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

Python

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

Q&A

解決済

1回答

1911閲覧

WSL2上のDockerからWindows上のファイルを読み込みたい

pepasuke623

総合スコア55

Docker

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

Python

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

0グッド

0クリップ

投稿2022/12/17 07:09

表題の件について質問させていただきます。

Docker Desktopが条件次第で有料化したので、WLS2上でDockerを立ち上げてPython環境を構築しました。
ここらへんを参考にしています)

Windows11上にWLS2のubuntuを立ち上げて、Dockerをスタートさせてvisual studio code上で「print("test")」が出力される状態になりました。
今度はDocker上で動くVisual Studio CodeからWindowsのファイルを読み込みたいと思っています。

実現したいこと

Windows11上にWLS2を立ち上げてからDockerを立ち上げて、そこからvisual studio codeを起動します。この状態からWindows上のファイルを読み込みたいです。
例えば、Dドライブ上の"test"というフォルダーにある"test_csv.csv"というファイルを読み込みたいとします。
つまり下記のコードが動くようにしたいです。

python

1import pandas as pd 2 3path ='D:/test/test_csv.csv' 4 5df = pd.read_csv(path) 6print(df)

しかし、これはDocker上に起動したvisual studio codeなので、Windows上のファイルは当然認識しません。

試したこと

色々調べたところ、DockerにWindows上ののフォルダーをマウントするという方法があるようです。(下記参照)

参考もとによれば、例えばCドライブならば

/mnt/c/

からパスをつなげるとWindows上のフォルダーをマウントできるようです。
試しにWLS2のubuntuで下記のように入力してみます。(コマンドと各種オプションをちゃんと理解していないので、誤りがあればご指摘いただけるとありがたいです)

docker run -it -v /mnt/D/test://new_dir ubuntu

この状態で下記のように入力してみます。

ls new_dir

このディレクトリの中には"test_csv.csv"があるはずなのに何も表示されません。
一方で、参考もとのように「\wsl.localhost\Ubuntu-20.04\mnt\D\test」というディレクトリが作成されていて、こちらを読み込んでいるようです。Windows上の「'D:/test」は読み込めていないようです。

このように、Windows上のファイルを読み込む手段が分かりません。ご教示いただけるとありがたいです。

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

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

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

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

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

jbpb0

2022/12/17 22:41 編集

docker起動してない状態でのwsl側のシェルで(「/mnt/D/test」ではなく)「/mnt/d/test」にアクセスしたら、windowsの「D:\test」にあるファイルのファイル名は参照できますでしょうか?
pepasuke623

2022/12/18 12:56

質問ありがとうございます! 確かにdocker起動せずに 「ls /mnt/d/test」 を入力すると 「test_csv.csv」 が表示されます。
jbpb0

2022/12/18 13:12

それでしたら、 docker run -it -v /mnt/d/test://new_dir ubuntu なら、どうでしょうか? 「/mnt/D/test://new_dir」ではなく「/mnt/d/test://new_dir」です
pepasuke623

2022/12/18 13:54

「docker run -it -v /mnt/d/test://new_dir ubuntu」 から 「ls new_dir」 で 「test_csv.csv」が表示されました。 Dとdって大文字と小文字が違うだけですけど、何が違うんですかね?(なんとなく解決したんですかね) あと初歩的な質問になりますが、 「docker run -it -v /mnt/d/test://new_dir ubuntu」 だと「root@***」と表示されて「code .」が受け付けなくなります。 ここからvisual studio codeを立ち上げるにはどうしたらいいのでしょうか? そもそもこの「root@***」って何なんでしょうか?
jbpb0

2022/12/18 15:13

> Dとdって大文字と小文字が違うだけですけど、何が違うんですかね? linuxでは、ファイル名やディレクトリ名の大文字・小文字は区別されます ですので、「/mnt/D」と「/mnt/d」は別の場所です windowsのDドライブは、wslでは「/mnt/d」です 「/mnt/D」ではありません wslの「/mnt/D」は、windowsではDドライブではなく「\wsl.localhost\Ubuntu-20.04\mnt\D」です
jbpb0

2022/12/18 23:55

> ここからvisual studio codeを立ち上げるにはどうしたらいいのでしょうか? そもそもこの「root@***」って何なんでしょうか? それは、この質問とは別内容だと思うので、別の質問にしてください
guest

回答1

0

ベストアンサー

shell

1docker run -it -v /mnt/D/test://new_dir ubuntu

↓ 変更 (「/mnt/D/」ではなく「/mnt/d/」)

shell

1docker run -it -v /mnt/d/test://new_dir ubuntu

とすれば、

Windows上の「'D:/test」は読み込めていない

は直ると思います

投稿2022/12/18 23:53

jbpb0

総合スコア7653

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

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

pepasuke623

2022/12/19 14:41

ご丁寧な解説をいただきありがとうございました!
pepasuke623

2022/12/21 11:52

まあ、もともとの趣旨は「Visual Studio CodeからWindowsのファイルを読み込みたい」というところなんですが、ここは自分で何とかして、分からなければ改めて質問します。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問