web-dev-qa-db-ja.com

WindowsでDocker Toolboxで--volumeオプションを使用する方法は?

シンプルな--volumeコマンドでDocker Toolboxを使用しますか?

「Docker Quickstart Terminal」を使用していますが、これを試してみると:

winpty docker run -it --rm --volume /C/Users/myuser:/myuser ubuntu

私はこのエラーがあります:

Invalid value "C:\\Users\\myuser\\:\\myuser" for flag --volume: bad mount mode specified : \myuser
See 'docker run --help'.

this に続いて、私も試しました

winpty docker run -it --rm --volume "//C/Users/myuser:/myuser" ubuntu

そして得た

Invalid value "\\\\C:\\Users\\myuser\\:\\myuser" for flag --volume: \myuser is not an absolute path
See 'docker run --help'.
36
Anthony O.

これは実際には プロジェクトの問題 であり、2つの回避策があります。

  1. データボリュームの作成:

    docker create -v //c/Users/myuser:/myuser --name data hello-world
    winpty docker run -it --rm --volumes-from data ubuntu
    
  2. Dockerホストで直接SSHする:

    docker-machine ssh default
    

    そしてそこから古典をやっています:

    docker run -it --rm --volume /c/Users/myuser:/myuser ubuntu
    
29
Anthony O.

これは選択された回答の改善です。その回答はc:\ Usersフォルダーに制限されているためです。 c:\ Users以外のディレクトリを使用してボリュームを作成する場合、これは拡張機能です。

Windows 7では、Dockerツールボックスを使用しました。 Virtual Boxを使用しました。

  1. 仮想ボックスを開く
  2. マシンを選択します(私の場合はデフォルト)。
  3. 右クリックして設定オプションを選択
  4. 共有フォルダーに移動
  5. 新しいマシンフォルダーを含めます。

たとえば、私の場合、次のものを含めました。

**Name**: c:\dev
**Path**: c/dev
  1. クリックして閉じる
  2. 「Docker Quickstart Terminal」を開き、Dockerマシンを再起動します。

次のコマンドを使用します。

$ docker-machine restart

動作したことを確認するには、次の手順に従います。

  1. DockerマシンへのSSH。

このコマンドの使用:

$ docker-machine ssh
  1. 共有/マウントしたフォルダーに移動します。

私の場合、このコマンドを使用します

$ cd /c/dev
  1. フォルダーのユーザー所有者を確認してください。 「ls -all」を使用して、所有者が「docker」になることを確認できます

次のようなものが表示されます。

docker@default:/c/dev$ ls -all
total 92
drwxrwxrwx    1 docker   staff         4096 Feb 23 14:16 ./
drwxr-xr-x    4 root     root            80 Feb 24 09:01 ../
drwxrwxrwx    1 docker   staff         4096 Jan 16 09:28 my_folder/

その場合、そのフォルダーのボリュームを作成できます。

次のコマンドを使用できます。

docker create -v /c/dev/:/app/dev --name dev image
docker run -d -it --volumes-from dev image

または

docker run -d -it -v /c/dev/:/app/dev image

どちらのコマンドも機能します。これが役に立つことを願っています。

44
jmgoyesc

2016年8月の時点で、Docker for Windowsはvirtualboxではなくhyper-vを直接使用するようになったため、少し異なっていると思います。最初に設定でドライブを共有してから、C:ドライブ文字形式を使用しますが、スラッシュを使用します。たとえば、私はH:\t\REDISディレクトリを作成し、このコマンドでコンテナの/dataにマウントされているのを確認できました。

docker run -it --rm -v h:/t/REDIS:/data redis sh

ドライブ文字とコロンを使用した同じ形式で、パス区切り文字にスラッシュを使用すると、Windowsコマンドプロンプトとgit bashの両方で機能します。

私はこの質問をグーグルで答えを見つけましたが、うまくいくものは見つかりませんでした。エラーはスローされずに動作するように見えますが、ホスト上のデータを見ることができませんでした(またはその逆)。最後に、設定を詳細にチェックアウトし、表示される形式を試しました。

enter image description here

最初に、ここでの設定でドライブ全体をdocker vmと共有する必要があります。これにより、hyper-vで実行されている「docker-machine」vmがそのドライブにアクセスできるようになります。次に、そこに示されている形式を使用する必要があります。この形式は、この1つのイメージにのみ存在し、Webで見つけることができるドキュメントや質問はありません。

docker run --rm -v c:/Users:/data Alpine ls /data
6
Jason Goemaat

すべてのWindowsの問題を解決し、Linuxと同じようにWindows OSで動作させるソリューションを探している場合は、以下を参照してください。これをテストしましたが、すべてのケースで機能します。どうやってそれを手に入れるかを示しています(ステップと思考プロセス)。 Dockerの使用とドッカーの問題への対処に関する記事もここに書いています。

解決策1:VirtualBoxを使用します(これが良い考えではない場合は、以下の解決策2を参照してください)。

  • VirtualBoxを開きます(Dockerツールと共に既にインストールされています)。
  • 仮想マシンを作成する
  • (これはオプションであり、スキップしてVMからポートを転送できます)2番目のイーサネットカードを作成します-ブリッジ、この方法でネットワークからIPアドレスを受信します(ドッカーマシンのようなIPがあります)
  • 1年以上前のUbuntu LTSをインストールします
  • ドッカーをインストールする
  • 共有ディレクトリを仮想マシンに追加し、プロジェクトディレクトリを自動マウントします(この方法でUbuntuからプロジェクトディレクトリにアクセスできます)
  • 完了

ボーナス:

  • すべてがLinuxと同じように機能しています
  • いつでもドッキング環境を一時停止/一時停止解除

解決策2:VirtualBoxを使用する(これは解決策1に非常に似ていますが、同様の問題を解決するときに役立つかもしれない思考プロセスも示しています)

  • 誰かがフォルダを/ C/Users/Publicに移動し、それが動作することを読んでください https://forums.docker.com/t/sharing-a-volume-on-windows-with-docker-toolbox/4953/ 2
  • それを試して、あなたの場合にはあまり意味がないことを理解してください。
  • ここでページ全体を読む https://github.com/docker/toolbox/issues/607 とページにリストされているすべてのソリューションを試す
  • このページ(現在読んでいるページ)を見つけて、他のコメントからすべての解決策を試してください
  • COMPOSE_CONVERT_WINDOWS_PATHS = 1環境変数を設定することで問題が解決する可能性があるという情報を見つけてください。
  • 数か月間、ソリューションを探すのをやめる
  • 戻って同じリンクをもう一度確認してください
  • 深く泣く
  • 啓発の瞬間を感じる
  • VirtualBoxを開きます(Dockerツールと共に既にインストールされています)。
  • 2番目のイーサネットカードを使用して仮想マシンを作成-ブリッジ、これによりネットワークからIPアドレスを受信します(ドッカーマシンのようなIPがあります)
  • 最新のUbuntu LTSをインストールします(数か月以内)。
  • 自動マウントが実際には機能せず、統合が壊れていることに注意してください(クリップボード共有など)
  • 仮想マシンを削除
  • 外に出て飲み物を飲む
  • 高価な車をレンタルし、高速道路で高速で行く
  • 車を破壊して死ぬ
  • PCの前でリスポーンする
  • 1年以上前のUbuntu LTSをインストールします
  • Dockerを実行してみてください
  • インストールされていないことに注意してください
  • Apt-get install dockerによるdockerのインストール
  • 推奨されるdocker.ioをインストールする
  • Docker-composeを実行してみてください
  • インストールされていないことに注意してください
  • apt get docker-composeをインストールする
  • Docker-composeでプロジェクトを実行してみてください
  • 古いバージョンであることに注意してください
  • 電力レベルを確認します(9000を超えている必要があります)
  • 最新バージョンのdockerのインストール方法を検索し、公式ガイドを見つけます https://docs.docker.com/install/linux/docker-ce/ubuntu/
  • 現在のdocker-composeとdocker.ioをアンインストールします
  • 公式ガイドを使用してドッカーをインストールします https://docs.docker.com/install/linux/docker-ce/ubuntu/
  • 共有ディレクトリを仮想マシンに追加し、プロジェクトディレクトリを自動マウントします(この方法でUbuntuからプロジェクトディレクトリにアクセスできるため、任意のdockerコマンドを実行できます)
  • 完了
5
Grzegorz Gajos

これを試して:

  1. Dockerクイックスタートターミナルを開きます。既に開いている場合は、_$ cd ~_を実行して、Windowsユーザーディレクトリにいることを確認します。
  2. $ docker run -it -v /$(pwd)/ubuntu:/windows ubuntu

エラーがタイプミスによるものであれば機能します。ユーザーディレクトリにubuntuという名前の空のフォルダーが作成されます。 ubuntuコンテナーにwindowsという名前のこのフォルダーが表示されます。

4
Thoran

Virtual Boxを使用する場合command-lineアプローチを好む人

1)docker-machineが実行されていないことを確認してください

Dockerクイックスタートターミナル:

docker-machine stop

2)共有Windows <-> docker-machineを作成します

Windowsコマンドプロンプト:

set VBOX=D:\Program Files\Oracle\VirtualBox\VBoxManage.exe
set VM_NAME=default
set NAME=c/htdocs
set HOSTPATH=%DROPBOX%\htdocs
"%VBOX%" sharedfolder add "%VM_NAME%" --name "%NAME%" --hostpath "%HOSTPATH%" --automount

)docker-machineを起動し、ボリュームを新しいコンテナーにマウントします

Dockerクイックスタートターミナル:
(繰り返しますが、Apache httpdコンテナーを開始しています。そのため、このポートが公開されています。)

docker-machine start
docker run -d --name my-Apache-container-0 -p 80:80 -v /c/htdocs:/usr/local/Apache2/htdocs my-Apache-image:1.0
3

Windows 7では、先頭に2つのスラッシュを使用するだけでうまくいきました。

docker run --rm -v //c/Users:/data Alpine ls /data/

ここから: https://github.com/moby/moby/issues/1259

2
Kirill

フォルダーvirtualBoxツールボックスとWindows 7およびnodejsイメージコンテナーを共有する

使用... Dockerクイックスタートターミナル[QST] Windowsエクスプローラー[WE]

始めましょう...

  1. [QST] Dockerクイックスタートターミナルを開く

  2. [QST]仮想マシンを停止

$ docker-machine stop

  1. [WE] Windowsエクスプローラーを開きます

  2. [WE] virtualBoxインストールディレクトリに移動します

  3. [WE] cmdを開いて実行します...

C:\ Program Files\Oracle\VirtualBox> VBoxManage sharedfolder add "default" --name "/ d/SVN_FOLDERS/X2R2_WP6/nodejs" --hostpath "\?\ d:\ SVN_FOLDERS\X2R2_WP6\nodejs" --automount

  1. oracle仮想マシンをチェックインして、新しい共有フォルダーが表示されたことを確認します

  2. [QST]仮想マシンを起動

$ docker-machine start

  1. [QST]コンテナnodejsを実行します

docker stop nodejs

docker rm nodejs

docker run -d -it --rm --name nodejs -v/d/SVN_FOLDERS/X2R2_WP6/nodejs:/ usr/src/app -w/usr/src/app node2

  1. [QST] bashをコンテナに開きます

docker exec -i -t nodejs/bin/bash

  1. [QST] dirを実行すると、共有ファイルが表示されます
1
ivan rc

解決しました!

ボリュームを追加します。

docker run -d -v my-named-volume:C:\ MyNamedVolume testimage:latest

ホストディレクトリをマウントします。

docker run -d -v C:\ Temp\123:C:\ My\Shared\Dir testimage:latest

0
Hugo Kokay