web-dev-qa-db-ja.com

ウィンドウ上のドッカーツールボックスマウントファイル

私はドッカーの初心者で、Windowsマシンを使用しています。しかし、ボリュームを使用したファイルのマウントに問題があります。ドキュメントには、OSXとWindowsのマウントファイルに関する次の事項が記載されています。

公式のdocker docs:

注:MacまたはWindowsでDocker Machineを使用している場合、DockerデーモンはOS X/Windowsファイルシステムへのアクセスを制限されます。 Docker Machineは/ Users(OS X)またはC:\ Users(Windows)ディレクトリを自動共有しようとするため、docker run -v/Users /:/ ...(OS X)またはdocker run -v/c/Users /:/

>> Dockerボリュームドックに移動

私は小さなnginx Dockerfileを持っています

Dockerfile

 FROM centos:6.6 
 
 MAINTAINER afym 
 
 ENV WEBPORT 80 
 
 RUN yum -y update; yum clean all 
 
 RUN yum -y install epel-release; yum clean all 
 
 RUN yum -y install nginx; yum clean all 
 
 RUN echo "daemon off;" >> /etc/nginx/nginx.conf

VOLUME /usr/share/nginx/html

EXPOSE $ WEBPORT 
 
 CMD ["/ usr/sbin/nginx"] 

シンプルなコンテナの作成

docker run -d --name simple -p 8082:80 ng1

8875448c01a4787f1ffe4c4c5c492efb039e452eff957391ac52a08915e18d66

enter image description here

ボリュームを持つコンテナの作成

私のWindowsホストディレクトリ

enter image description here

-vオプションを使用してDockerコンテナーを作成する

docker run -d --name simple2 -v/c/Users/src:/ usr/share/nginx/html -p 8082:80 ng1
無効な値 "C:\\ Users \\ src; C:\\ Program Files \\ Git \\ usr \\ share \\ nginx \\ html" 
 for flag -v:bad mount mode specified 
:\ Program Files\Git\usr\share\nginx\html 
「C:\ Program Files\Docker Toolbox\docker.exe run --help」を参照してください。

ng1画像の検査

docker検査ng1

enter image description here

ボリューム付きのDockerコンテナーを作成しているときに何が問題になっていますか?

ありがとう。

19
afym

次のようなボリュームに対して、追加の/で実行してみてください:

docker run -d --name simple2 -v /c/Users/src://usr/share/nginx/html -p 8082:80 ng1

または、ホストOSの場合でも、

docker run -d --name simple2 -v //c/Users/src://usr/share/nginx/html -p 8082:80 ng1

これにより issue

これは、実行可能ファイルに渡す前にMSYS環境がPOSIXパスをWindowsパスにマップするためのものです。

28
Stanislav

Docker〜> 1.12を使用していて、この問題に直面している人のために。 Docker設定を介して最初に具体的にドライブを共有する必要があることに気づくまで、30分間かけてそれを理解しようとしました。以下を参照してください https://docs.docker.com/docker-for-windows/#/shared-drives

1
olive_tree

ローカルドライブにアクセスするだけの場合、MINGW32 Docker Toolboxターミナルは各ドライブのルートを/<drive-letter>に配置するため、ドライブC:\/c/になります

0
James Gentes

OPが言ったように:

公式のドッカーのドキュメント:

注:MacまたはWindowsでDocker Machineを使用している場合、DockerデーモンはOS X/Windowsファイルシステムへのアクセスを制限されます。 Docker Machineは/ Users(OS X)またはC:\ Users(Windows)ディレクトリを自動共有しようとするため、次のコマンドを使用してファイルまたはディレクトリをマウントできます。
docker run -v/Users /:/ ...(OS X)
または
docker run -v/c/Users /:/

ただし、他のディレクトリにアクセスする場合は、仮想ボックス設定に新しい共有フォルダーを追加する必要があります([設定]> [共有フォルダー]> [共有の追加])。

新しい共有をそこに追加します(以前にVMを停止した場合にのみ可能です、docker-machine stop

path C:\Projects
name c/Projects
autoMount yes

または、vbox構成ファイルを直接編集します
C:\Users\<username>\.docker\machine\machines\default\default\default.vbox

<SharedFolders>の行に追加してください

<SharedFolder name="c/Projects" hostPath="\\?\c:\Projects" writable="true" autoMount="true"/>

マシンを再起動します。

docker-machine stop
docker-machine start

これで、ベースC:\Projectsを含むディレクトリもマウントできるようになりました。

docker run -v //c/Projects/myApp://myApp <myImage>
0
jeb