docker 工具箱装载文件 windows
docker toolbox mount file on windows
我是 docker 的初学者,我使用的是 windows 机器。但是我在使用卷挂载文件时遇到问题。该文档说明了有关 OSX 和 windows 上挂载文件的以下内容:
官方 docker 文档:
注意:如果您在 Mac 或 Windows 上使用 Docker Machine,您的 Docker 守护进程对您的 OS X/Windows 文件系统。 Docker Machine 尝试自动共享您的 /Users (OS X) 或 C:\Users (Windows) 目录 - 因此您可以使用挂载文件或目录docker 运行 -v /Users/:/ ... (OS X) 或 docker 运行 -v /c/Users/:/
我有一个小的nginx Docker文件
Docker文件
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
invalid value "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
See 'C:\Program Files\Docker Toolbox\docker.exe run --help'.
检查 ng1 图像
docker inspect 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:
This is something that the MSYS environment does to map POSIX paths to Windows paths before passing them to executables.
对于使用 docker ~> 1.12 并面临此问题的任何人。我花了 30 分钟试图弄明白,直到我意识到你必须先通过 docker 设置专门共享一个驱动器,请参阅:
https://docs.docker.com/docker-for-windows/#/shared-drives
如果您只是想访问本地驱动器,MINGW32 Docker 工具箱终端会将每个驱动器的根目录放在 /<drive-letter>
中,因此驱动器 C:\
将位于 /c/
正如 OP 所说:
Official docker docs :
Note: If you are using Docker Machine on Mac or Windows, your Docker
daemon only has limited access to your OS X/Windows filesystem. Docker
Machine tries to auto-share your /Users (OS X) or C:\Users (Windows)
directory - and so you can mount files or directories using
docker run -v /Users/:/ ... (OS X)
or
docker run -v /c/Users/:/
但如果要访问其他目录,则需要在虚拟盒子设置中添加新的共享文件夹(设置>共享文件夹>添加共享)。
在那里添加一个新共享(只有当你之前停止虚拟机时才有可能,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>
我是 docker 的初学者,我使用的是 windows 机器。但是我在使用卷挂载文件时遇到问题。该文档说明了有关 OSX 和 windows 上挂载文件的以下内容:
官方 docker 文档:
注意:如果您在 Mac 或 Windows 上使用 Docker Machine,您的 Docker 守护进程对您的 OS X/Windows 文件系统。 Docker Machine 尝试自动共享您的 /Users (OS X) 或 C:\Users (Windows) 目录 - 因此您可以使用挂载文件或目录docker 运行 -v /Users/:/ ... (OS X) 或 docker 运行 -v /c/Users/:/
我有一个小的nginx Docker文件
Docker文件
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
invalid value "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 See 'C:\Program Files\Docker Toolbox\docker.exe run --help'.
检查 ng1 图像
docker inspect 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:
This is something that the MSYS environment does to map POSIX paths to Windows paths before passing them to executables.
对于使用 docker ~> 1.12 并面临此问题的任何人。我花了 30 分钟试图弄明白,直到我意识到你必须先通过 docker 设置专门共享一个驱动器,请参阅: https://docs.docker.com/docker-for-windows/#/shared-drives
如果您只是想访问本地驱动器,MINGW32 Docker 工具箱终端会将每个驱动器的根目录放在 /<drive-letter>
中,因此驱动器 C:\
将位于 /c/
正如 OP 所说:
Official docker docs :
Note: If you are using Docker Machine on Mac or Windows, your Docker daemon only has limited access to your OS X/Windows filesystem. Docker Machine tries to auto-share your /Users (OS X) or C:\Users (Windows) directory - and so you can mount files or directories using
docker run -v /Users/:/ ... (OS X)
or
docker run -v /c/Users/:/
但如果要访问其他目录,则需要在虚拟盒子设置中添加新的共享文件夹(设置>共享文件夹>添加共享)。
在那里添加一个新共享(只有当你之前停止虚拟机时才有可能,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>