私はドッカーの初心者で、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 /:/
私は小さな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
ボリュームを持つコンテナの作成
私のWindowsホストディレクトリ
-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
ボリューム付きのDockerコンテナーを作成しているときに何が問題になっていますか?
ありがとう。
次のようなボリュームに対して、追加の/
で実行してみてください:
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パスにマップするためのものです。
Docker〜> 1.12を使用していて、この問題に直面している人のために。 Docker設定を介して最初に具体的にドライブを共有する必要があることに気づくまで、30分間かけてそれを理解しようとしました。以下を参照してください https://docs.docker.com/docker-for-windows/#/shared-drives
ローカルドライブにアクセスするだけの場合、MINGW32 Docker Toolboxターミナルは各ドライブのルートを/<drive-letter>
に配置するため、ドライブC:\
は/c/
になります
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>