为什么在docker-machine虚拟机中创build一个文件会导致权限被拒绝?

我想创build文件/etc/docker/daemon.json在使用docker-machine创build的虚拟机通过SSH进入它如下

docker-machine ssh manager1 "sudo echo \"{ \"insecure-registries\":[\"192.168.100.99:5000\"] }\" >| /etc/docker/daemon.json" 

上述失败的消息

sh: can't create /etc/docker/daemon.json: Permission denied

如何实现上述类似于我试图做到这一点,因为我需要把它放在一个非交互式的bash脚本。

你的命令以超级用户身份运行echo,但输出是由作为用户运行的shellredirect来处理的。 试试用下面的方法把pipe道连接到sudo跑道上:

 docker-machine ssh manager1 "echo \"{ \\\"insecure-registries\\\":[\\\"192.168.100.99:5000\\\"] }\" \ | sudo tee /etc/docker/daemon.json" 

注意我也在echo中再次引用了引号,否则shell / echo命令会引用引号。


对于这个特定的用例,我build议你创build你的机器:

 docker machine create --engine-insecure-registry 192.168.100.99:5000 ... 

在将来。