[解決済み】Windows 10のDockerでカレントディレクトリをボリュームとしてマウントする。
質問
説明
Windows10でDocker1.12.5をHyper-V経由で使用しており、コンテナ実行ファイルをカレントパスのコマンドとして使用したいです。Dockerイメージをビルドし、正常に動作していますが、カレントパスのマウントに問題があります。考え方としては、エイリアスを作成して
docker run --rm [...]
コマンドを使用することで、カレントディレクトリでシステム全体として使用できるようになりました。
セットアップ
E ドライブに "test" というフォルダがあり、その中に "folder on windows host" というフォルダがあり、コマンドが動作していることがわかるようになっています。Dockerfileでは、以下のようなディレクトリが作成されます。
/data
で、VOLUMEとWORKDIRとして定義しています。
持つ
E:\test
をPowerShellのカレントディレクトリにして、Dockerコマンドを絶対パスで実行すると、その中身が
E:\test
:
PS E:\test> docker run --rm -it -v E:\test:/data mirkohaaser/docker-clitools ls -la
total 0
drwxr-xr-x 2 root root 0 Jan 4 11:45 .
drwxr-xr-x 2 root root 0 Jan 5 12:17 folder on windows host
問題点
絶対表記ではなく、カレントディレクトリを使用したい。ボリュームでpwdを使用するとエラーメッセージが異なるため使用できなかった。
で試してみる ($pwd)
PS E:\test> docker run --rm -it -v ($pwd):/data mirkohaaser/docker-clitools ls -la
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error parsing reference: ":/data" is not a valid repository/tag.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
/($pwd) で試しています。
PS E:\test> docker run --rm -it -v /($pwd):/data mirkohaaser/docker-clitools ls -la
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error parsing reference: "E:\\test" is not a valid repository/tag.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
Trying with \´pwd´.
PS E:\test> docker run --rm -it -v ´$pwd´:/data mirkohaaser/docker-clitools ls -la
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Invalid bind mount spec "´E:\\test´:/data": invalid mode: /data.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
pwd`で試してみる
PS E:\test> docker run --rm -it -v `$pwd`:/data mirkohaaser/docker-clitools ls -la
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: create $pwd: "$pwd" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
Windows 10のDockerでカレントディレクトリをボリュームとしてマウントする際の正しい構文を教えてください。
解決方法を教えてください。
Windowsのコマンドライン(
cmd
) のように、カレントディレクトリをマウントすることができます。
docker run --rm -it -v %cd%:/usr/src/project gcc:4.9
PowerShellでは
${PWD}
で、カレントディレクトリが表示されます。
docker run --rm -it -v ${PWD}:/usr/src/project gcc:4.9
Linuxの場合。
docker run --rm -it -v $(pwd):/usr/src/project gcc:4.9
クロスプラットフォーム
以下のオプションは、PowerShellとLinux(少なくともUbuntu)の両方で動作します。
docker run --rm -it -v ${PWD}:/usr/src/project gcc:4.9
docker run --rm -it -v $(pwd):/usr/src/project gcc:4.9
関連
-
[解決済み] Cygwinを使用してWindowsにsshpassをインストールする方法は?
-
[解決済み] Windowsのバッチスクリプトにおける"@"の意味について
-
[解決済み] Windows用の堅牢で最小限のインストーラーを作成するには?[クローズド]
-
[解決済み] Windowsにpipをインストールするにはどうしたらいいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] Eclipseが起動できない - Javaは起動したが終了コード=13を返した
-
[解決済み] ボリュームに単一ファイルをマウントする方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】VMの初期化中にエラーが発生した(java/lang/NoClassDefFoundError: java/lang/Object)
-
[解決済み】バッチ内のファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくない
-
[解決済み] xcopyがAccess Deniedと表示される原因は何ですか?
-
[解決済み] どのような場合に0x40010004のコードでプログラムが終了するのでしょうか?
-
[解決済み] ssh_dispatch_run_fatal:message authentication code incorrect unable to ssh jupyter notebook on remote server.入力のMACが破損している。
-
[解決済み] Windowsアラート:不正なピンが何度も入力されています。
-
[解決済み] Windowsでフォルダへのアクセスを回復する方法
-
[解決済み] 設定ファイルを開くことができません。Windowsの/usr/local/ssl/openssl.cnf [重複] を開くことができません。
-
[解決済み] Ahkファイルから.exeを生成すると、Heur.AdvML.Bが表示される。
-
[解決済み] ファイルパスの前に付ける「୧⃛(๑⃙⃘◡̈๑⃙⃘)୨⃛」は何ですか?