为什么在 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 ...
将来。
我想在使用 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 ...
将来。