Ich habe die folgende Konfiguration:
Dockerfile
Das run-apache.sh-Skript:
%Vor%Dann baue ich das Bild mit:
%Vor%dann
%Vor%Wenn ich dann versuche, den Container auszuführen, der Verbindungen vom Host im Port 80 akzeptiert, bekomme ich Folgendes:
%Vor%Irgendwelche Hilfe?
Der Fehler scheint ziemlich klar zu sein:
FATA [0002] Fehlerantwort vom Daemon: Container kann nicht gestartet werden 67ed31b50133adc7c745308058af3a6586a34ca9ac53299d721449dfa4996657: Fehler beim Starten von userland proxy: listen tcp 0.0.0.0:80: bind: Adresse wird bereits verwendet
Es heißt "Adresse wird bereits verwendet". Das bedeutet, dass etwas auf Ihrem System - wahrscheinlich ein Webserver wie Apache - bereits Port 80 überwacht. Sie müssen entweder:
-p
-Argument als docker run
oder -p
ablegen. Da Docker die angeforderte Portweiterleitung nicht einrichten kann, wird der Container nicht gestartet.
Mit den Optionen (a) und (b) kann der Container an Port 80 auf dem Host gebunden werden. Dies ist nur notwendig, wenn Sie von einem anderen als Ihrem Host auf den Container zugreifen möchten.
Option (c) ist nützlich, wenn Sie nur über den Docker-Host auf den Container zugreifen möchten, den Container in Ihrem lokalen Netzwerk jedoch nicht verfügbar machen möchten. In diesem Fall würden Sie die Container-IP-Adresse verwenden, die vom Andockfenster zugewiesen wurde, die Sie abrufen können, indem Sie docker inspect
ausführen und die Ausgabe lesen oder einfach:
Es wird gesagt, dass Port 80 beschäftigt ist ... führe dies aus, um zu sehen, wer Port 80 benutzt
%Vor%blättern Sie ganz nach rechts, um die PID des Prozesses zu sehen, der Port 80 hält ... seine PID 1380, also machen wir eine Prozessliste, um diese PID zu sehen
%Vor%so teardown diesen beleidigenden Prozess, um den Port 80 freizugeben
%Vor%__ oder __
%Vor%Tags und Links apache docker centos dockerfile