warum führt Docker Init nicht als lxc aus?

warum führt Docker Init nicht als lxc aus?

Docker führt Init nicht aus. Daher werden Dienste während des Startvorgangs nicht gestartet. Lxc führt Init während lxc-start aus. Da Docker lxc verwendet, warum führt es Init nicht aus? Welche Vorteile hat es, Init nicht auszuführen und sich für die Daemonisierung auf Supervisord zu verlassen?

Antwort1

Docker ist einAnwendungscontainer, mehr auf die Verteilung von Apps als Container ausgerichtet. In diesem Fall wird die App/der Prozess ausgeführtinnender Container ist der einzige, der ausgeführt wird, sein Init-Prozess. Wenn Ihr Prozess mehrere Apps benötigt (MySQL, MongoDB-Datenbank usw.), starten Sie diese nicht in Ihrem Docker-Container, der von einem Init-Daemon verwaltet wird, sondern Sie starten mehrere Docker-Container, jeden innerhalb des Docker-Containers.

Du kannst es versuchenhttp://phusion.github.io/baseimage-docker/das einen einfachen Init-Daemon bereitstellt, um weitere Prozesse in Ihrem Docker-Image auszuführen (dieses ist Ubuntu-basiert) oder Sie können LXD ausprobierenhttp://www.ubuntu.com/cloud/lxdfür Container-Technologie eher wie einSystemcontainer.

Antwort2

Diese Frage wurde aufgeworfen alsAusgabeauf GitHub und ein Pull Request wurde zusammengeführt, um initdie Ausführung seit 0.6.x zu ermöglichen):

docker run $IMAGE /sbin/init

Quelle

Der ursprüngliche Grund, warum init nicht ausgeführt wurde (nicht gültig, da0.6.x):

Beim Starten eines neuen Containers bindet sich Docker Mint selbst als /sbin/init innerhalb des Containers ein, verbirgt das echte /sbin/init und macht es im Prozess für die Ausführung nicht verfügbar.

Diese Antwortkann weitere Hilfe bieten, undDas Docker-Handbuchkönnte nützlich sein.

verwandte Informationen