2016-07-26 11 views
2

Ich habe einen Server mit mehreren Docker-Containern eingerichtet, auf die mit jwilders nginx reversre proxy zugegriffen werden kann. Wenn Sie die Container ausführen, können Sie die Umgebungsvariable VIRTUAL_HOST festlegen. Ich habe versucht, einen Weg zu finden, diese nach dem Start eines Containers zu aktualisieren.Docker - Aktualisieren von Umgebungsvariablen eines Containers

Eine Lösung gepostet here:

Sie halten nur Docker-Daemon und Wechselbehälter config in

/var/lib/docker/containers/[container-id]/config.json

müssen Sie den Docker Daemon zu stoppen, aber ich würde es vorziehen, nicht zu muss darauf zurückgreifen.

Another here verwendet Docker begehen die Instanzinformationen zu erhalten:

auch sagen, dass Sie Dateisystem Änderungen im Behälter bewahren -can-, indem sie sie als neues Bild zu begehen;

$ docker run -it --name=foobar alpine sh 
$ docker commit foobar mynewimage 
$ docker rm foobar 
$ docker run -it --name=foobar mynewimage sh 

Obwohl dies scheint auch für nur die Änderung einer Umgebungsvariable ein wenig übertrieben zu sein.

Ich habe in docker update gesucht, aber das ist hauptsächlich für die Rekonfiguration Containerressourcen.

Natürlich, wenn ich keine andere Wahl habe, werde ich eine der oben genannten Methoden verwenden, aber ich frage mich, ob jemand eine andere Lösung gefunden hat?

+0

Ich denke, es ist besser, eine Dockerfile mit einigen 'ENV abc 123' oder 'ENV abc = 123 def = 456' zu aktualisieren und neu zu erstellen/neu zu starten – user2915097

Antwort

5

Zerstören Sie Ihren Container und starten Sie einen neuen mit der neuen Umgebungsvariable docker run -e .... Es ist identisch mit dem Ändern einer Umgebungsvariablen in einem laufenden Prozess, Sie stoppen es und starten mit einem neuen Wert, der übergeben wurde. Ersetzen Sie das Konzept des Neustartens eines Prozesses durch das Zerstören und Neuerstellen eines neuen Containers.

Wenn Ihr Container Dateien enthält, die nicht verloren gehen können, sollten Sie Volumes verwenden. Der andere Inhalt des Container-Dateisystems sollte entweder wegwerfbar oder unveränderlich sein.

+0

Nun ja, wahr, man könnte standardmäßig den Container neu erstellen, und Ich habe es am Ende gemacht, seit ich ein Volume verwende, aber ich war mehr neugierig, ob es eine Möglichkeit gibt, dies als eine Art running patch zu tun? –

+1

Docker bietet keine Möglichkeit zum Ändern einer Umgebungsvariablen in einem aktiven Container, da das Betriebssystem keine Möglichkeit bietet, eine Umgebungsvariable in einem laufenden Prozess zu ändern. Sie müssen zerstören und neu erstellen. – BMitch

Verwandte Themen