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

Why does creating a file inside a docker-machine VM result in permission denied?

我想在使用 docker 机器创建的虚拟机中创建文件 /etc/docker/daemon.json,方法如下

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 脚本中。

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

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 ...

将来。