使用Windows主机时如何挂载Docker卷?

在Windows主机下安装Docker卷对我来说是一个巨大的痛苦,而且我无法使其正常工作。

目前,我得到了以下简单的Dockerfile:

FROM php:5-apache

RUN apt-get update

当我从中构建图像并启动容器时

docker build -t phisch:dev .

docker run phisch:dev

容器正常启动。

但是当我尝试装载一个卷时,

docker run -v /c/Users/phisch/dev/htdocs:/var/www phisch:dev

将显示以下消息:

C:\Users\phisch\dev>docker run -v /c/Users/phisch/dev/htdocs:/var/www phisch:dev

no such file or directory

docker: Error response from daemon: Container command not found or does not exist..

/var/www目录肯定存在于容器中,尝试其他目录不会更改结果。在主机端目录前添加斜杠也无济于事。(//c/Users/phisch/dev/htdocs

例如/var/www,如何安装到C:/Users/phisch/dev/htdocs

phisch@DESKTOP-UC1LB9J MINGW64 ~/dev (master)

$ docker inspect phisch:dev

[

{

"Id": "sha256:73c1533222a905a378f12505ccbd9e9b34cde5a4b34ed008c39e23d5d58a9c91",

"RepoTags": [

"dev_web:latest",

"phisch:dev",

"phisch:dev3"

],

"RepoDigests": [],

"Parent": "sha256:d2c4149d86c4dfceaff0e9c4eb5a5d42ca7815f81dd08baad4dc8bda6db2fb10",

"Comment": "",

"Created": "2016-02-10T12:16:37.667236134Z",

"Container": "dad811f51ef3b94d9845d13a0e43ad07ccd5684ea2747b3846accdc71abeb628",

"ContainerConfig": {

"Hostname": "e06f5a03fe1f",

"Domainname": "",

"User": "",

"AttachStdin": false,

"AttachStdout": false,

"AttachStderr": false,

"ExposedPorts": {

"80/tcp": {}

},

"Tty": false,

"OpenStdin": false,

"StdinOnce": false,

"Env": [

"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",

"PHP_INI_DIR=/usr/local/etc/php",

"PHP_EXTRA_BUILD_DEPS=apache2-dev",

"PHP_EXTRA_CONFIGURE_ARGS=--with-apxs2",

"GPG_KEYS=0BD78B5F97500D450838F95DFE857D9A90D90EC1 6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3",

"PHP_VERSION=5.6.18",

"PHP_FILENAME=php-5.6.18.tar.xz",

"PHP_SHA256=54dd9106c3469bc7028644d72ac140af00655420bbaaf4a742a64e9ed02ec1b0"

],

"Cmd": [

"/bin/sh",

"-c",

"apt-get update"

],

"ArgsEscaped": true,

"Image": "sha256:d2c4149d86c4dfceaff0e9c4eb5a5d42ca7815f81dd08baad4dc8bda6db2fb10",

"Volumes": null,

"WorkingDir": "/var/www/html",

"Entrypoint": null,

"OnBuild": [],

"Labels": {}

},

"DockerVersion": "1.10.0",

"Author": "",

"Config": {

"Hostname": "e06f5a03fe1f",

"Domainname": "",

"User": "",

"AttachStdin": false,

"AttachStdout": false,

"AttachStderr": false,

"ExposedPorts": {

"80/tcp": {}

},

"Tty": false,

"OpenStdin": false,

"StdinOnce": false,

"Env": [

"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",

"PHP_INI_DIR=/usr/local/etc/php",

"PHP_EXTRA_BUILD_DEPS=apache2-dev",

"PHP_EXTRA_CONFIGURE_ARGS=--with-apxs2",

"GPG_KEYS=0BD78B5F97500D450838F95DFE857D9A90D90EC1 6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3",

"PHP_VERSION=5.6.18",

"PHP_FILENAME=php-5.6.18.tar.xz",

"PHP_SHA256=54dd9106c3469bc7028644d72ac140af00655420bbaaf4a742a64e9ed02ec1b0"

],

"Cmd": [

"apache2-foreground"

],

"ArgsEscaped": true,

"Image": "sha256:d2c4149d86c4dfceaff0e9c4eb5a5d42ca7815f81dd08baad4dc8bda6db2fb10",

"Volumes": null,

"WorkingDir": "/var/www/html",

"Entrypoint": null,

"OnBuild": [],

"Labels": {}

},

"Architecture": "amd64",

"Os": "linux",

"Size": 491287784,

"VirtualSize": 491287784,

"GraphDriver": {

"Name": "aufs",

"Data": null

}

}

]

回答:

/CMD Windows shell 可能会将其解释为选项。

首先尝试使用docker-machine ssh默认设置,以便在VM中打开ssh会话。从 那里 尝试docker再次运行:docker run -v

/c/Users/phisch/dev/htdocs:/var/www phisch:dev

正如thaJeztah在第18290期中所评论的:

您可以考虑使用docker-compose;docker-

compose允许您定义相对于docker-compose.yml文件位置的绑定安装卷。

使用docker-

compose文件可让您在单个文件中指定运行容器所需的所有选项,这使其非常适合在团队成员之间共享(即,只要运行即可docker-compose up

-d使用正确的选项启动项目的所有容器)。

此评论提到了第二个/:

docker run -v //c/Users/phisch/dev/htdocs:`/var/www` phisch:dev

即使在docker toolbox msys

shell会话中,也存在问题(例如问题282)


经过长时间的讨论,问题在于其中/var/www有一个文件夹。

挂载 /c/Users/phisch/dev/htdoc到空文件夹确实可以,但是可能无法获得预期的结果,因为默认CMD

apache2-foreground可能仍根据其内容提供内容/var/wwwhtdocs如果将htdocs其安装到另一个文件夹中则不会包含任何内容)。

以上是 使用Windows主机时如何挂载Docker卷? 的全部内容, 来源链接: utcz.com/qa/431252.html

回到顶部