使用 docker-machine on windows 将远程机器目录挂载到其容器
Mount remote machine directory to its container with docker-machine on windows
当我尝试将远程目录挂载到容器时:
$ eval $(docker-machine env manager)
$ docker run --restart=unless-stopped -d -p 3376:2375 \
-v /etc/docker:/certs:ro \
swarm manage --tlsverify \
--tlscacert=/certs/ca.pem \
--tlscert=/certs/server.pem \
--tlskey=/certs/server-key.pem \
consul://$(docker-machine ip keystore):8500
我收到错误:
C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: Invalid bind mount spec "C:\Users\MY_USERNAME\AppData\Local\Programs\Git\etc\docker;C:\Users\MY_USERNAME\AppData\Local\Programs\Git\certs;ro": invalid mode: \Users\MY_USERNAME\AppData\Local\Programs\Git\certs;ro.
See 'C:\Program Files\Docker Toolbox\docker.exe run --help'.
看起来 docker-machine 正在尝试将 localhost 目录挂载到远程容器,但这不是我想要的。
解决方法是通过 ssh 进入 manager 机器并 运行 那里的命令!那么 docker-machine 的全部目的是什么?
我错过了什么吗?如何使用 docker-machine?
将远程机器目录挂载到其容器中
注:我没有用virtualbox,机器是用azure驱动创建的。
我猜您正在使用基于 mingw
的 shell,例如。 Cygwin,Git Bash 或类似的。 shell 将尝试将类 Unix 路径扩展为 Windows 等价物。
我建议使用不同的 shell(例如 Powershell)
如果对 Windows 使用 Git,您可以通过设置环境变量 MSYS_NO_PATHCONV=1
.
来禁用此自动路径转换行为
当我尝试将远程目录挂载到容器时:
$ eval $(docker-machine env manager)
$ docker run --restart=unless-stopped -d -p 3376:2375 \
-v /etc/docker:/certs:ro \
swarm manage --tlsverify \
--tlscacert=/certs/ca.pem \
--tlscert=/certs/server.pem \
--tlskey=/certs/server-key.pem \
consul://$(docker-machine ip keystore):8500
我收到错误:
C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: Invalid bind mount spec "C:\Users\MY_USERNAME\AppData\Local\Programs\Git\etc\docker;C:\Users\MY_USERNAME\AppData\Local\Programs\Git\certs;ro": invalid mode: \Users\MY_USERNAME\AppData\Local\Programs\Git\certs;ro.
See 'C:\Program Files\Docker Toolbox\docker.exe run --help'.
看起来 docker-machine 正在尝试将 localhost 目录挂载到远程容器,但这不是我想要的。
解决方法是通过 ssh 进入 manager 机器并 运行 那里的命令!那么 docker-machine 的全部目的是什么?
我错过了什么吗?如何使用 docker-machine?
将远程机器目录挂载到其容器中注:我没有用virtualbox,机器是用azure驱动创建的。
我猜您正在使用基于 mingw
的 shell,例如。 Cygwin,Git Bash 或类似的。 shell 将尝试将类 Unix 路径扩展为 Windows 等价物。
我建议使用不同的 shell(例如 Powershell)
如果对 Windows 使用 Git,您可以通过设置环境变量 MSYS_NO_PATHCONV=1
.