Wygląda na to, że systemd
nie jest aktywny lub dostępny w obrazach Docker Ubuntu.systemd i systemctl w obrazach Ubuntu Docker
Używam kontenerów Docker z obrazów ubuntu:16.04
i ubuntu:16.10
.
Jeśli wykonam systemctl status ssh
w kontenerze 16,04
, wynikiem jest błąd Failed to connect to bus: No such file or directory
. W pojemniku 16.10
występuje błąd bash: systemctl: command not found
.
Jeśli wykonam which systemctl
systemctl znajduje się w kontenerze 16.04
, ale nie w kontenerze 16.10
.
Zauważyłem, że istnieje /lib/systemd
.
Próbowałem zainstalować systemd z apt-get install systemd libpam-systemd systemd-ui
. Następnie which systemctl
znaleziska systemctl w 16.10
ale systemctl status ssh
nadal daje błąd Failed to connect to bus: No such file or directory
Moje główne pytanie brzmi: jak można Systemd i systemctl być aktywowany do stosowania w obrazach Ubuntu Döcker?
Dlaczego systemd nie jest aktywny w kontenerach Ubuntu Docker? Czy systemd nie jest używany do tworzenia instancji kontenera?
Nie udało mi się znaleźć żadnej dokumentacji na ten temat dla obrazów Ubuntu/Ubuntu Docker, tylko informacje o przejściu z Ubuntu z Upstart
do systemd
. Czy istnieje dokumentacja dająca pełne wyjaśnienie?
Jeśli chcesz w pełni funkcjonalny system init, użyj maszyny wirtualnej. – user2105103
Istnieje kilka propozycji naśladowania systemu inicjalizacyjnego w PID-1 wewnątrz kontenera. Zasadniczo powinien reagować na sygnał SIGTERM, który jest wysyłany przez "przystanek dokujący", rozprowadzając go do innych procesów w pojemniku. I powinno być w stanie czerpać zombie z zabitych procesów w tle. => Teraz pozostaje tylko wybrać jedną z implementacji, które są w pobliżu. Niektóre z nich właśnie przenoszą prawdziwy "init" w C/C++, inni robią trochę skryptów wokół sygnału (3) i waitpid (3) w języku wysokiego poziomu - standardowa biblioteka "sygnałowa" Pythona również do tego służy. (jak pokazano w moim skryptu do dokowania docker-systemctl) –