LINUX.ORG.RU
ФорумAdmin

дёрнуть команду в контейнере, не запуская сам контейнер aka chroot :)

 ,


0

1

Привет, всем.

Значит забутстрапил я какую-то убунту и хочу дёрнуть какую-нибудь команду, пусть будет ls. Поехали:

localhost /var/lib/machines # systemd-nspawn -D bionic/ /bin/bash -c "ls -l"
Spawning container bionic on /home/int/machines/bionic.
Press ^] three times within 1s to kill container.
Failed to mount /etc/resolv.conf (type n/a) on /home/int/machines/bionic/run/systemd/resolve/stub-resolv.conf (MS_BIND ""): No such file or directory
total 56
drwxr-xr-x   2 1449984000 1449984000 4096 May 17 20:22 bin
drwxr-xr-x   2 1449984000 1449984000 4096 Apr 24  2018 boot
drwxr-xr-x   7 root       root        400 May 17 20:49 dev
drwxr-xr-x  59 1449984000 1449984000 4096 May 17 20:34 etc
drwxr-xr-x   2 1449984000 1449984000 4096 Apr 24  2018 home
drwxr-xr-x  11 1449984000 1449984000 4096 May 17 20:21 lib
drwxr-xr-x   2 1449984000 1449984000 4096 May 17 20:19 lib64
drwxr-xr-x   2 1449984000 1449984000 4096 May 17 20:18 media
drwxr-xr-x   2 1449984000 1449984000 4096 May 17 20:18 mnt
drwxr-xr-x   2 1449984000 1449984000 4096 May 17 20:18 opt
dr-xr-xr-x 259 root       root          0 May 17 20:49 proc
drwx------   2 1449984000 1449984000 4096 May 17 20:37 root
drwxr-xr-x   3 root       root         60 May 17 20:49 run
drwxr-xr-x   2 1449984000 1449984000 4096 May 17 20:23 sbin
drwxr-xr-x   2 1449984000 1449984000 4096 May 17 20:18 srv
dr-xr-xr-x   9 root       root        180 May 17 20:49 sys
drwxrwxrwt   2 root       root         40 May 17 20:49 tmp
drwxr-xr-x  10 1449984000 1449984000 4096 May 17 20:18 usr
drwxr-xr-x  11 1449984000 1449984000 4096 May 17 20:18 var
Container bionic exited successfully.
localhost /var/lib/machines #

По поводу ResolvConf=bind-host я в курсе, не нужно тыкать носом. Вопрос сейчас не в этом.

«Ну, команда выполнилась и зачем ты меня сюда позвал?» - спросишь ты. «А я хочу дёрнуть её через machinectl, при этом в nspawn файле записав Boot=no, ну и указать всякие Bridge и Bind'ы» - отвечу я :)

localhost /var/lib/machines # systemctl start systemd-nspawn@bionic
localhost /var/lib/machines # machinectl shell bionic /bin/bash -c "ls -l"
Failed to get shell PTY: Protocol error
localhost /var/lib/machines #
И потом спрошу: «Такое вообще возможно?» :)


ЯННП, тебе нужен контейнер из одной команды или иметь возможность делать в него machinectl shell? Это взаимоисключающие вещи. machinectl shell запускает шелл внутри контейнера через его экземпляр systemd, т. е. без systemd внутри контейнера это работать не будет.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от intelfx

По твоему ответу я уже понял, что через machinectl этого нельзя сделать. Спасибо :) А директивы из nspawn файла будут работать, если я буду запускать systemd-nspawn -D machine /bin/bash -c «command»?

ubik
() автор топика
Ответ на: комментарий от ubik

По твоему ответу я уже понял, что через machinectl этого нельзя сделать.

Теперь я вообще запутался, что тебе надо. Или внятно сформулируй, чего ты хочешь, в формате «что сделал / что получил / что ожидал» или иди читай man systemd-nspawn и systemctl cat systemd-nspawn@ — там всё есть.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Ок, я просто хочу запустить команду из контейнера, при этом сам контейнер бутать не хочу, т.е. без -b флага, хочу сделать systemd-nspawn -D container /bin/bash -c 'command'

ubik
() автор топика
Ответ на: комментарий от intelfx

если я буду дёргать эту команда, то директивы из nspawn файла будут применены к контейнеру?

ubik
() автор топика
Ответ на: комментарий от intelfx

Спасибо, дружище! И последний вопрос: я сетнул Boot=on рестарую сервис

systemctl restart systemd-nspawn@bionic.service
Пытаюсь зашеллиться и получаю вот такое:
localhost /var/lib/machines # machinectl shell bionic 
Failed to get shell PTY: Protocol error
localhost /var/lib/machines #
journalctl пишет следующее:
May 17 21:14:24 localhost audit[27372]: SYSCALL arch=c000003e syscall=44 success=yes exit=56 a0=e a1=55c09ba8b450 a2=38 a3=0 items=0 ppid=1 pid=27372 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="systemd-nspawn" exe="/usr/x86_64-pc-linux-gnu/bin/systemd-nspawn" subj=kernel key=(null)
May 17 21:14:24 localhost audit: PROCTITLE proctitle=2F7573722F7838365F36342D70632D6C696E75782D676E752F62696E2F73797374656D642D6E737061776E002D2D7175696574002D2D6B6565702D756E6974002D2D626F6F74002D2D6C696E6B2D6A6F75726E616C3D7472792D6775657374002D2D6E6574776F726B2D76657468002D55002D2D73657474696E67733D6F7665
May 17 21:14:24 localhost systemd[1]: Starting Container bionic...
May 17 21:14:24 localhost systemd-udevd[27376]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
May 17 21:14:24 localhost systemd-nspawn[27372]: Failed to mount tmpfs at /run/lock: No such file or directory
May 17 21:14:24 localhost systemd-nspawn[27372]: [!!!!!!] Failed to mount API filesystems, freezing.
May 17 21:14:24 localhost systemd-nspawn[27372]: Freezing execution.
May 17 21:14:24 localhost systemd-udevd[27376]: Using default interface naming scheme 'v240'.
May 17 21:14:24 localhost systemd-machined[3940]: New machine bionic.
May 17 21:14:24 localhost systemd[1]: Started Container bionic.
ЧЯДНТ?

ubik
() автор топика
Ответ на: комментарий от ubik

директория /run/lock есть на хосте

ubik
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.