我正在尝试使用docker machine的鱼和鱼壳中的码头客户端。我可以运行docker-machine config dev
,它会给我传递给docker
的参数。但是,当我尝试docker (docker-machine config dev) ps
时,会说flag provided but not defined: --tls --tlscacert
如果我将shell切换为bash,那么docker $(docker-machine config dev) ps
工作正常。那么这里的语法有什么问题?
我试着谷歌搜索答案,似乎错误与Go有关,也许?
Docker 1.5.0版,构建a8a31ef
fish,版本2.1.1
编辑:以下是docker-machine config dev
--tls --tlscacert=/Users/me/.docker/machine/machines/dev/ca.pem --tlscert=/Users/me/.docker/machine/machines/dev/cert.pem --tlskey=/Users/me/.docker/machine/machines/dev/key.pem -H="tcp://192.168.99.102:2376"
答案 0 :(得分:3)
您正在遇到this issue。
简短的回答是bash会进一步将命令替换拆分为任何空格的单独参数,而fish只用换行符拆分它们。由于docker-machine config dev
没有输出换行符,因此外部docker
命令只会获得一个带有嵌入空格的巨型参数。
要模拟bash行为,可以用换行替换空格:
docker (docker-machine config dev | tr -s ' ' \n) ps
那应该做你期望的事。