用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