docker --Windows 的卷格式

问题描述 投票:0回答:3

我正在尝试使用我们在工作中使用的 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: Error response from daemon: invalid bind mount spec "/C/Users/username/var/docker/environments/development/scripts/var/log/apache2;C:\\Program Files\\Git\\var\\log\\apache2": invalid volume specification: '/C/Users/username/var/docker/environments/development/scripts/var/log/apache2;C:\Program Files\Git\var\log\apache2': invalid mount config for type "bind": invalid mount path: '\Program Files\Git\var\log\apache2' mount path must be absolute. See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.

我尝试按如下方式设置容器:

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
=
/var/www

docker git-bash
3个回答
17
投票

对于在 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)


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

应该再用谷歌搜索几分钟。


2
投票

如果要使路径相对,可以使用 pwd 和变量。例如:

CURRENT_DIR=$(pwd)    
docker run -v /"$CURRENT_DIR"/../../test/:/test alpine ls test
© www.soinside.com 2019 - 2024. All rights reserved.