为什么在docker-machine VM中创建文件会导致权限被拒绝?

时间:2017-05-13 10:04:29

标签: bash docker sh boot2docker docker-machine

我想在使用docker-machine创建的vm中创建文件/etc/docker/daemon.json,通过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脚本中。

1 个答案:

答案 0 :(得分:0)

您的命令以root身份运行echo,但输出由作为用户运行的shell重定向处理。尝试使用管道来运行tee的sudo:

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

注意我还多次将echo中的引号转义,否则引号会被shell / echo命令吃掉。

对于这个特定用例,我建议您创建机器:

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

将来。