用docker-compose发出安装docker的卷

我的情景

我正在尝试使用docker-compose.yml文件构builddocker-compose.yml

 version: '3' services: myapp-nginx: image: nginx:1.10 volumes: - ./nginx/certs:/etc/nginx/certs ports: - 80:80 - 443:443 

使用build命令如下

 $ docker stack deploy --compose-file docker-compose.yml myapp Creating network myapp_default Creating service myapp_myapp-nginx 

我的系统有Docker Version 17.03.1-ce-mac5 (16048)

问题

卷挂载不起作用,如果我注释掉volumes: - ./nginx/certs:/etc/nginx/certs然后一切工作正常。

否则nginx根本不工作,我明白了

 CAGTAM1059934:docker iskumar$ docker stack ps myapp ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS efjia8b7y6jd myapp_myapp-nginx.1 nginx:1.10 manager1 Ready Rejected 5 seconds ago "invalid mount config for type…" c9c6ogh11osi \_ myapp_myapp-nginx.1 nginx:1.10 worker2 Shutdown Rejected 10 seconds ago "invalid mount config for type…" iveikxpnbq6x \_ myapp_myapp-nginx.1 nginx:1.10 worker1 Shutdown Rejected 15 seconds ago "invalid mount config for type…" 

在docker-compose v3中有没有特殊的方法可以装入卷?

装入卷时也必须使用绝对path,也使用docker run

 $ docker run --rm -it -v ./eos:/eos:ro ubuntu docker: Error response from daemon: create ./eos: "./eos" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intented to pass a host directory, use absolute path. See 'docker run --help' 

我从我的macbook而不是在boot2docker虚拟机上运行docker stack deploy 。 这就是为什么系统无法find这些networking安装源,即使我使用eval $(docker-machine env manager1)激活了eval $(docker-machine env manager1)

首先,我使用了–no-trunc参数来查看完整的错误信息。

 $> docker node ps --no-trunc --- Showed "invalid mount config for type "bind": bind source path does not exist" --- 

之后,从主机系统( 我的MacBook )的文件复制到VM和启动堆栈工作正常。

感谢https://github.com/docker/docker/issues/31202#issuecomment-281312704