Docker Portbindung ändern

8

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.

%Vor%

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.

>     
Thomas Kremmel 10.07.2014, 13:25
quelle

3 Antworten

0

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

ist

1) 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

    
phoenix 12.12.2014 17:01
quelle
0

Ich habe ein Werkzeug für PORT des laufenden Containers erstellen für myboot2docker .

Beispiel: zwei (2) Container:

  • docker run -p 11521: 1521 --name = xe1 container1
  • docker run -p 21521: 1521 --name = xe3 container3

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%     
Widi Harsojo 24.09.2015 17:45
quelle
0

Sobald Sie Ihr new_container-Image ausgeführt und die erforderlichen Änderungen vorgenommen haben, speichern Sie den neuen Container als neues Image mit docker commit . Führen Sie dann dieses neue Image mit dem Flag -p aus, um die Ports zuzuordnen.

    
sxm1972 10.02.2018 10:52
quelle

Tags und Links