LXD - Как выполнить скрипт внутри контейнера с хоста
Я написал скрипт извлечения github внутри работающего контейнера, чтобы контейнер мог получать обновленные коды. Но как я могу вызвать этот скрипт с хост-машины?
Я пробовал что-то подобное, но безуспешно.
lxc exec container-name -- gitPull.sh
lxc exec container-name --sh -c "cd ~ && ll"
Я также пытался переместить каталог с хоста в контейнеры lxd, но он не скопирует подкаталог в контейнер.
Может ли кто-нибудь помочь?
Большое спасибо!
1 ответ
Когда ты бежишь lxc exec
в контейнере Ubuntu вы получаете корневую оболочку и ваш домашний каталог /root
,
Если вы используете учетную запись без полномочий root (например, ubuntu
от 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"
, Там должно быть место после --
так как --
это специальная инструкция для оболочки вашего хоста, которая говорит, что 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/
(в этом контейнере).