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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Docker

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

Q&A

解決済

2回答

2225閲覧

DockerでホストOSのフォルダとコンテナのディレクトリをマウントできない。

MIRA1122

総合スコア4

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Docker

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

0グッド

0クリップ

投稿2020/06/19 11:36

前提・実現したいこと

DockerでNode.jsの開発環境をつくりたいと思っています。
こちらの記事を参考に
[【Docker入門】知識0からDockerでフォルダをマウントしてbashを起動するまで]
(https://qiita.com/karadaharu/items/0fdd9b4b373a8de656ab)

node:10.13-alpineのイメージを作成し、Alpine Linuxのコンテナの起動ができることろまでは確認ができています。

ホストOS(ローカルPC)のフォルダと、dockerで動かしてるLinuxのディレクトリを共有できるようにマウントしたいのですが、下記コマンドを実行してもマウントがされません。
絶対パスの指定方法などが間違っているのでしょうか。

該当のコマンド

docker run -v /d/Develop/docker_test:/app --rm -it testuser/node-sample

上記コマンドを実行するとAlpine Linuxには入ることができますが、その後npm init などで生成したpackage.jsonがローカルフォルダには反映されません。

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

Windows10 Pro V1909
Docker Version 2.3.0.3
VSCode

お手数ですが、ご教授いただければ幸いです。

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

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

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

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

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

guest

回答2

0

環境がWindowsとありますが、
DockerはLinuxOS前提で動作するのでWindowsでは起動出来ません。

その辺をどうやって実現するかでいくつか手段があります。

  1. VirtualBox(+ Vagrant)でLinux仮想マシンを立ち上げる
  2. Dockerの公式からDocker for Windowsを導入してLinux仮想マシンを立ち上げる
  3. WSL2を使ってLinux仮想マシンを立ち上げる

この中で質問文の状況に合致するケースで考えた時、
Docker for Windowsでピンと来たのでそれに絞ってエスパー回答します。
(そもそもが違ってたらごめんなさい、流してください)

参考記事: Docker for Windowsでマウントする - Qiita

Dockerは性善説で作られており、悪い事をしようとすれば機密情報を不特定多数にばらまくなんて事も技術的には可能です。

その辺の対策として、「Docker for XXX」はLinuxの仮想マシンを立ち上げる時、
公開してもいいよというディレクトリを指定する仕組みになっています。

アプリの設定を開いて公開するディレクトリの外にはずれているんじゃないかと思いますので、
対象のディレクトリを公開する設定に変更してみてください。

投稿2020/06/22 08:34

miyabi-sun

総合スコア21203

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

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

MIRA1122

2020/06/26 03:31 編集

情報が足りない中でも、ご親切にご回答いただきありがとうございました。 VSCodeでつかっていたターミナルの設定のせいだったのか、Poweshellで再度実行させたところうまくいきましたので、解決済みとさせて頂きます。 (ベストアンサーはお早く返信を頂いた他の回答者の方にさせていただきました。) なお、Docker for Windowsを使っています。Docker上でAlpine Linuxをビルドして、そのうえでNode.jsのアプリケーションを動かすようにしています。 >対象のディレクトリを公開する設定に変更してみてください。 こちらも教えていただきありがとうございました。 公開するディレクトリについても確認したところ、指定していたDドライブを公開するようになっていました。
guest

0

ベストアンサー

ちなみにできないとはエラーが表示されたのでしょうか?
その場合はエラーメッセージも掲載するとスムーズに解決するかと思います。

一応掲載されたコマンドを見たところ、WindowsのDドライブのフォルダをマウントしたいのでしょうか?
コマンドは特に問題なさそうです。

dockerの設定でdドライブが共有許可されているのかを確認してください。

投稿2020/06/19 12:30

comefigo

総合スコア1051

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

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

MIRA1122

2020/06/22 02:30

ご回答ありがとうございます。 エラーは表示されておりません。 言葉足らずで申し訳ありません。 ここでの”できない”は”コンテナとホストPCでファイルを共有するコマンドを実行後、コンテナ内でファイルを生成してもホストPC内に反映されない”というものです。 >dockerの設定でdドライブが共有許可されているのかを確認してください。 確認いたしましたが、共有許可になっておりました。
comefigo

2020/06/22 05:45

なるほど。 では、docker runコマンドを実行されたのちに、以下のコマンドを実行し、マウント先を確認してみてください。 --- docker inspect コンテナIDもしくはコンテナ名 --- 表示されたコンテナの詳細情報のMountsの結果はを共有していただけますでしょうか? http://docs.docker.jp/engine/reference/commandline/inspect.html
MIRA1122

2020/06/26 03:25

ご回答ありがとうございました。 VSCodeでターミナルをPowershellに変えて、絶対パスを D:\Develop\node-sample のように書き換えたらうまくいきました。 なぜだかわからないですが、VSCode上で、Bashというターミナルを使うとうまくいかなかったようです。 inspectというオプションで情報を見れるということでしたので、次回困ったときには実行してみたいと思います。 絶対パスを
comefigo

2020/06/26 05:56

解決されてよかったです。 inspectは割と使いますので、是非多用してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問