docker exec -> 通过 ssh 执行时权限被拒绝

docker exec -> permission denied when executing through ssh

我正在尝试在远程服务器中 运行ning 的 docker 容器上执行命令。我 运行 通过 ssh 执行大多数命令,它们都可以正常工作。但是,此命令修改了文件 /etc/environment,我收到“权限被拒绝”错误。

有问题的命令是docker exec container_id echo 'WDS_SOCKET_PORT=XXXXX' >> /etc/environment

我尝试将选项 -u 0 添加到 docker exec 命令,但没有成功。

我不介意更改 Dockerfile,因为我可以毫无问题地终止、删除或重新创建此容器。

错误不是来自 docker 或 ssh,而是来自您的 shell 解析您想要 运行 的命令。您正在尝试修改主机上的文件。要在容器内进行 io 重定向,您需要在那里 运行 一个 shell 并使用 shell.

解析命令
ssh user@ip "docker exec  container_id /bin/sh -c 'echo \"WDS_SOCKET_PORT=XXXXX\" >> /etc/environment'"

编辑:请注意,整个 docker 命令应该用引号括起来。我相信这是因为 ssh 可能会将命令的不同部分解析为 docker 命令的参数。这样,每个 sub-command 都被清楚地分隔了。