Windows 的 docker --volume 格式

Mem*_*rry 7 git-bash docker

我正在尝试使用我们在工作中使用的 shell 脚本来设置我们的开发环境,并通过 Git Bash 将其重新用于我的 Windows 环境。

容器在shell脚本中的调出方式如下:

docker run \
--detach \
--name=server_container \
--publish 80:80 \
--volume=$PWD/var/www:/var/www \
--volume=$PWD/var/log/apache2:/var/log/apache2 \
--link=mysql_container:mysql_container \
--link=redis_container:redis_container \
web-server
Run Code Online (Sandbox Code Playgroud)

当我按原样运行时,它返回以下错误消息:

C:\Program Files\Docker\Docker\Resources\bin\docker.exe:来自守护进程的错误响应:无效的绑定挂载规范“/C/Users/username/var/docker/environments/development/scripts/var/log/apache2 ;C:\Program Files\Git\var\log\apache2": 无效的卷规范:'/C/Users/username/var/docker/environments/development/scripts/var/log/apache2;C:\Program Files\ Git\var\log\apache2':类型“bind”的挂载配置无效:挂载路径无效:'\Program Files\Git\var\log\apache2' 挂载路径必须是绝对的。请参阅“C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help”。

我做了一堆谷歌搜索和文档阅读,但我对 Docker 有点不知所措,我认为我错了。我尝试按如下方式设置容器:

docker run \
--detach \
--name=server_container \
--publish 80:80 \
--volume=/c/users/username/var/www:/var/www \
--volume=/c/users/username/var/log/apache2:/var/log/apache2 \
--link=mysql_container:mysql_container \
--link=redis_container:redis_container \
web-server
Run Code Online (Sandbox Code Playgroud)

它仍然会出现类似的错误消息。如果我删除冒号:/var/www 它会出现,但它似乎没有正确映射这些目录,那就是它不知道 C:\users\username\var\www = /var/www

我知道我在这里遗漏了一些非常愚蠢的东西,但是当我查看文档时,我只是眼花缭乱。任何帮助将不胜感激。

Nee*_*ani 9

对于在 Windows 10 上使用 Docker 的人,/路径中必须包含一个额外的内容:

docker run -it -v //c/Users/path/on/host:/app/path/in/docker/container command
Run Code Online (Sandbox Code Playgroud)

(注意一个额外的/c

如果您正在使用 Git Bash 并使用pwd然后在/那里使用额外的:

docker run -p 3000:3000 -v /app/node_modules -v /$(pwd):/app 09b10e9fda85`
Run Code Online (Sandbox Code Playgroud)

/之前通知$(pwd)


Mem*_*rry 5

好吧,我在发布后不久就回答了我自己的问题。

这是正确的格式。

docker run \
--detach \
--name=server_container \
--publish 80:80 \
--volume=//c/users/username/var/www://var/www \
--volume=//c/users/username/var/log/apache2://var/log/apache2 \
--link=mysql_container:mysql_container \
--link=redis_container:redis_container \
web-server
Run Code Online (Sandbox Code Playgroud)

应该多搜索几分钟。