Как мне создать фоновый контейнер systemd-nspawn?

Выбор дистрибутива

*отклоните, не что-то, что Вы действительно садитесь и изучаете. Я выбрал бы дистрибутив, такой как одно из следующего:

POSIX

Существуют, очевидно, другие, которых Вы видите на distrowatch.com. Я выбрал эти 5, так как они действительно представляют в значительной степени каждый *, отклоняют, который имеет значение, за пределами Соляриса или HP-UX.

Соответствие POSIX важно, но не придирчиво, особенно если Вы остаетесь в Bash, awk, sed тип сценариев. Несомненно будут различия поэтому, если Вы будете склонны остаться на пути POSIX, то он сэкономит Вам время в конечном счете, особенно если Вы, которых транзитный участок дистрибутива и/или перемещает от одного семейства *, отклоните другому.

Большинство дистрибутивов не является совместимым POSIX, видит страницу Википедии на POSIX для окровавленных деталей.

LSB

Основой Стандарта LSB или Linux является проект/рабочая группа, запущенный Основой Linux, поскольку попытка стандартизировать API, инструменты, и т.д. через различное *отклоняет дистрибутивы. Это очень похоже в, он - цели как POSIX.

человек и информационные страницы

Большинство приложений обычно предоставляет подробную информацию, как использовать их в одном из 3 мест на *, отклоняют систему.

  1. страницы справочника - Большинство команд предоставляет страницы справочника, который короток для страниц руководства. Это Ваш лучший друг при попытке выяснить, как команды на *отклоняют работу. Они - доступное использование команды: man .

         $ man less
         LESS(1)                                                                                                                  LESS(1)
    
         NAME
                less - opposite of more
    
         SYNOPSIS
                less -?
                less --help
                less -V
                less --version
                less [-[+]aBcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~]
                     [-b space] [-h lines] [-j line] [-k keyfile]
                     [-{oO} logfile] [-p pattern] [-P prompt] [-t tag]
                     [-T tagsfile] [-x tab,...] [-y lines] [-[z] lines]
                     [-# shift] [+[+]cmd] [--] [filename]...
               (See the OPTIONS section for alternate option syntax with long option names.)
    
  2. информационные страницы - информационные страницы являются похожими страницам справочника. Инструменты Most GNU обеспечивают их, и они - доступное использование команды info .

        $ info less
        File: *manpages*,  Node: less,  Up: (dir)
    
        LESS(1)                                                                LESS(1)
    
    
    
        NAME
               less - opposite of more
    
        SYNOPSIS
               less -?
               less --help
               less -V
               less --version
               less [-[+]aBcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~]
                    [-b space] [-h lines] [-j line] [-k keyfile]
                    [-{oO} logfile] [-p pattern] [-P prompt] [-t tag]
                    [-T tagsfile] [-x tab,...] [-y lines] [-[z] lines]
                    [-# shift] [+[+]cmd] [--] [filename]...
               (See  the  OPTIONS section for alternate option syntax with long option
               names.)
    
  3. --help** - Инструменты Most обеспечивают некоторую форму справки, поддержанной в саму программу. Это обычно доступно путем передачи аргумента --help к команде, --help.

              $ less --help
    
                           SUMMARY OF LESS COMMANDS
    
              Commands marked with * may be preceded by a number, N.
              Notes in parentheses indicate the behavior if N is given.
    
          h  H                 Display this help.
          q  :q  Q  :Q  ZZ     Exit.
         ---------------------------------------------------------------------------
    
                                   MOVING
    
          e  ^E  j  ^N  CR  *  Forward  one line   (or N lines).
          y  ^Y  k  ^K  ^P  *  Backward one line   (or N lines).
          f  ^F  ^V  SPACE  *  Forward  one window (or N lines).
          b  ^B  ESC-v      *  Backward one window (or N lines).
          z                 *  Forward  one window (and set window to N).
          w                 *  Backward one window (and set window to N).
    

Что искать

Для начинающих Вы захотите дистрибутив, который идет [gcc] (компилятор), диспетчер пакетов, sed, awk, Perl, Bash, и все другие виды или GNU Coreutils, такие как:

Список продолжается и на, и это в значительной степени, почему я думаю, что большинство из нас болтается на этом stackexchange сайте 8-).

Я думал бы об изучении *, отклоняют как ремесло, во многом как деревянная работа или плотницкие работы. Начало работы довольно легко, но освоение инструментов может занять время жизни.

РЕДАКТИРОВАНИЕ № 1

Касание некоторых точек из комментариев. Я перемещаю хорошую строку опроса этого @JoelDavis, поднятый в ответ именно так, что это более видимо потенциальным читателям.

Q: Почему никакое упоминание о Fedora/Ubuntu? Выбор FreeBSD по одному из тех кажется на бросок их в глубину пула.

A: CentOS покрывает Red Hat, FreeBSD касается BSDs. Для новичка, учащегося *, отклоняют, я продвинул бы к CentOS по Fedora для запуска, так как мы преподаем основные принципы. CentOS (BSD, Debian и SUSE в этом отношении) собираются возможно быть лучшим соответствием, если Вы выходите для нахождения задания, а не Fedora/Ubuntu.

Я также упомянул бы, что это любому и прибывающий *отклоняет человека: "узнайте, что практическое руководство справляется *, отклоняют как сервер ОС сначала, настольная вторая ОС)". В ~80% вопросов я отвечаю на сайтах SE, я обычно вижу пользователей, которые не имеют хорошего фундаментального понимания того, как или справиться *, отклоняют сервер или не понимают, как разрабатывать/управлять в одном.

См. эту статью ZDNet при необходимости в дополнительном доказательстве: серверы Linux продолжают расти, Windows и Unix продолжают уменьшаться. Серверы - то, где большинство из нас испытывает необходимость для контакта с *, отклоняют.

Не читайте вышеупомянутое как меня, отклонение *отклоняет настольные навыки или *возможности nix на рабочих столах в любом способе. Моя основная ежедневная ОС для 10 + годы была или Fedora или CentOS. Я просто помещаю фокус изучения *, отклоняют как сервер ОС.

5
05.07.2015, 22:20
2 ответа

Хорошо, чего бы это ни стоило, следующее для меня было успешным:

sudo systemd-nspawn -bxD/

Практически идентично вашему, за исключением того, что я не даю машины имя, и я получаю временный снимок -x btrfs моего / для корня контейнера.

Это вызвало getty контейнера на pty моего терминала, и я вошел в систему под логином и все такое.

Признаюсь, я был немного озадачен, но после того, как немного пощупал systemctl в контейнере с zsh Завершение, я пришел к (запустить из контейнера) :

systemctl stop console-getty.service

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or other units.
Authenticating as: mikeserv
Password:
==== AUTHENTICATION COMPLETE ===

Которая заставила машину передать свой контроль над терминалом. Единственное, что я начал с sudo , который также получает собственный уровень управления терминалом для аутентификации в первую очередь. В результате у меня остался пустой терминал, и никакое количество kill -CONT "$ (pgrep ksh)" не помогло мне. И поэтому я снова был в тупике на мгновение или два, но (в другом терминале) ...

sudo fuser -v /dev/pts/*

                     USER        PID ACCESS COMMAND
/dev/pts/0:          mikeserv   8347 F.... zsh
                     root      18003 F.... sudo
/dev/pts/13:         mikeserv   9553 F.... zsh
                     mikeserv  16838 F.... ksh
                     root      17657 F.... sudo
                     root      17658 F.... systemd-nspawn
/dev/pts/14:         root      17675 F.... systemd

Дал мне приведенный выше список, и я подумал - какого черта?

sudo kill -STOP 17657

И - о чудо - в исходном терминале у меня был ksh . Чтобы подвести итог, мне нужно было убедиться, что я все еще могу получить доступ к машине , хотя, конечно, иначе это было бы бесполезно:

machinectl -l

MACHINE                    CLASS     SERVICE
localhost-35ceaa76b1306897 container nspawn

Хорошо ...

sudo machinectl login localhost-35ceaa76b1306897

Connected to machine localhost-35ceaa76b1306897. 
Press ^] three times within 1s to exit session.

Arch Linux 4.0.7-2-ARCH (pts/0)

localhost-35ceaa76b1306897 login:

И я получил еще один getty на другом терминале!

2
27.01.2020, 20:40

У меня аналогичная проблема. Мой подход заключается в использовании dtach для управления подключением и отключением от терминала, на котором запущен контейнер. Затем внутри контейнера я могу запустить tmux / screen и т. Д.

machinectl позволит вам запускать контейнеры при загрузке, но на момент написания этой статьи debian stable не поддерживает иметь версию systemd , которая включает эту функцию.

2
27.01.2020, 20:40

Теги

Похожие вопросы