LXD - 如何从主机执行容器内的脚本

LXD - 如何从主机执行容器内的脚本

我在正在运行的容器中编写了一个 github pull 脚本,以便容器可以获取更新的代码。但是我如何从主机调用此脚本?

我曾尝试过类似的事情,但没有成功。

lxc exec container-name -- gitPull.sh
lxc exec container-name --sh -c "cd ~ && ll"

我也尝试将目录从主机推送到 lxd 容器,但它不会将子目录复制到容器中。

有人可以帮忙吗?

非常感谢!

答案1

当你lxc exec在 Ubuntu 容器上运行时,你会获得一个 root shell 并且你的主目录是/root

如果你正在使用非 root 账户(例如ubuntufrom ubuntu:18.04),那么你可以使用以下命令进入该账户

lxc exec mycontainer -- sudo --login --user ubuntu

如果你想以用户身份运行命令ubuntu,那么你可以

$ lxc exec mycontainer -- sudo --login --user ubuntu whoami
ubuntu

您在 中输入了错误lxc exec container-name --sh -c "cd ~ && ll"。后面应该有一个空格,--因为--这是对主机 shell 的一个特殊指令,表示该lxc exec命令应停止将任何后续选项读取为 的选项lxc exec。例如,以下内容是错误的,因为-l选项是由 处理的,lxc exec而不是逐字给出作为在容器中运行的命令。

$ lxc exec mycontainer ls -l
Error: unknown shorthand flag: 'l' in -l

正确的是

$ lxc exec mycontainer -- ls -l

您可以通过运行将目录从主机推送到容器

$ lxc file push --recursive /home/myusername/myfiles/ mycontainer/home/ubuntu/

/home/myusername/myfiles/主机上的目录树将被复制到容器mycontainer内的(现有)目录/home/ubuntu/(在该容器中)。

相关内容