Ich führe einen Container (nennen wir es old_container
) mit exposed
Port 80 und binde den Port mit dem -p
Flag an die Host-Schnittstelle an Port 80.
sudo docker run -p 80:80 -i -t & lt; old-image-id & gt;
In meiner Produktionsumgebung möchte ich jetzt von old_container
zu new_container
wechseln. Also möchte ich den old_container
herunterfahren und den new_container
starten.
Zuerst muss ich einige manuelle Änderungen in new_container
vornehmen. Also ich führe es ohne das -p
Flag aus, da ich es nicht an Port 80 binden kann, bevor ich diese Änderungen vorgenommen habe.
Wenn ich mit meinen Änderungen fertig bin, melde ich mich von new_container
ab. Mein Plan war jetzt, die old_container
zu stoppen und die new_container
an Port 80 zu binden. Der Befehl [start][1]
bietet jedoch keine Portbindungsmöglichkeit.
Um zu meiner Frage zu kommen: Ich möchte die Port-Bindung für einen gestoppten Container festlegen, vorzugsweise ohne die Problemumgehung, ein Commit-Image von new_container
zu erstellen und dieses Image als weiteren neuen Container auszuführen.
Ihr Anwendungsfall klingt gut, es ist ziemlich interessant, Docker auf PROD zu sehen. Was ist die manuelle Änderung, die Sie vornehmen werden? Ich nehme an, dass die Lösung für Ihr Problem möglicherweise
ist1) Anbringen & amp; einen Container entfernen ( Wie kann ich einen Anhang anhängen? Docker Container später ausführen? )
docker attach container_name
ctrl p ctrl q
2) Ausführen des Andock-Exec-Befehls
docker run -it -p 80:80 --name=old_container <old-image-id>
Der obige Befehl erstellt einen Container namens "old_container"
docker exec -d <old_container> mkdir foo
Der obige Befehl erstellt foo Verzeichnis im Home-Ordner des laufenden Containers. Ich nehme an, Sie können Ihre manuellen Änderungen als Skript anstelle von 'mkdir foo' hinzufügen (ich habe es noch nie probiert)
P.S : docker exec ist nur von der Version docker 1.3 verfügbar
Ich habe ein Werkzeug für PORT des laufenden Containers erstellen für myboot2docker .
Beispiel: zwei (2) Container:
Ich erstelle mit diesem Befehl ein weiteres Port-Mapping für container1
%Vor%und dann verbinde ich meine Spring Java-Anwendung mit localhost: 15210
Um zu container3 zu wechseln, geben Sie einfach diesen Befehl ein
%Vor%unten sind Details Befehl in Aktion.
%Vor%