我尝试使用我们在工作中使用的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
当我按原样运行时,它会返回以下错误消息:
C:\ Program Files \ Docker \ Docker \ Resources \ bin \ docker.exe:错误 来自守护程序的响应:无效的绑定装入规范 " / C /用户/用户名在/ var /泊坞窗/环境/开发/脚本/无功/日志/ Apache2的; C:\ PROGRAM Files \ Git \ var \ log \ apache2":无效的卷规范: ' / C /用户/用户名在/ var /泊坞窗/环境/开发/脚本/无功/日志/ Apache2的; C:\ PROGRAM Files \ Git \ var \ log \ apache2':类型" bind":无效的mount配置: 无效的挂载路径:' \ Program Files \ Git \ var \ log \ apache2'装载路径 必须是绝对的。请参阅' C:\ Program Files \ Docker \ Docker \ Resources \ bin \ docker.exe运行--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
使用类似的错误消息仍会出错。如果我删除冒号:/ var / www它出现了,但它似乎没有正确映射这些目录,也就是说它不知道C:\ users \ username \ var \ www = /无功/网络
我知道我在这里失去了一些痛苦的东西,但是当我看到文档时,我只是茫然。任何帮助将不胜感激。
答案 0 :(得分:2)
嗯,我在发布后回答了自己的问题。
这是正确的格式。
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
应该继续谷歌搜索几分钟。
答案 1 :(得分:1)
如果要使路径相对,可以使用pwd和变量。例如:
CURRENT_DIR=$(pwd)
docker run -v /"$CURRENT_DIR"/../../test/:/test alpine ls test
答案 2 :(得分:1)
对于在Windows 10上使用Docker的人,该路径中必须包含一个额外的/
。
docker run -it -v //c/Users/path/on/host:/app/path/in/docker/container command
(请注意在c附近有一个额外的 / )
如果您正在使用git bash并使用 pwd ,那么在那里也要使用额外的/
。
docker run -p 3000:3000 -v /app/node_modules -v /$(pwd):/app 09b10e9fda85
(在<$(pwd)之前加上 / )