我正在尝试在正在运行的 lxc ubuntu 容器中执行更复杂的任务,但我的问题可以使用这个简单的示例来解释。当我跑步时
sudo lxc-attach -n container1 -- echo "test" > test.txt
在 shell 脚本内部,我希望test.txt
在我的容器内部找到它,但我却在我的主机上找到它!出了什么问题?
答案1
经过一番玩弄后,我发现了这个问题。我将在这里留下我的问题和答案,供那些将来不可避免地遇到同样问题并找到这个问题的可怜的灵魂使用。
关键是仅在访问文件时附加到容器,而不是在运行整个命令之前附加到容器。与直觉相反,shell 不会首先连接到容器并执行命令,而是首先解释>
并在本地创建文件。为了解决这个问题,我们tee
仅在需要时才连接到容器。解决方案如下。
echo "test" | sudo lxc-attach container1 -- tee test.txt