Dockerfile wie man den localhost alias hinzufügt

9

Dockerfile wie man localhost Alias ​​hinzufügt?

Hi, ich muss localhost alias in Dockerfile hinzufügen Ich mache folgendes:

RUN echo '127.0.0.1 locdev' >> /etc/hosts

Aber wenn ich dann zur image bash console gehe

%Vor%

und versuchen, diesen Host zu pingen, es wirft Fehler

%Vor%

Was /etc/hosts enthält?

%Vor%

Es gibt keine anderen Datensätze

Weiß jemand, wie kann ich das tun? Ich muss dies in Dockerfile als externen Dienst tun, führen Sie dieses Andockfenster aus und ich führe es nicht von der Befehlszeile aus.

In meinem Fall ist es eine PHP -Anwendung, die in Bitbucket repository gespeichert wird. Es gibt ein neues Feature namens PIPELINES . Es wird eine Anwendung auf Docker image erstellt.

In meinem Fall verbindet sich diese Anwendung mit mysql server, wo ich config nicht ändern kann (es wird die Produktion unterbrechen). Auf diesem Docker-Image habe ich mysql server eingerichtet. So funktioniert localhost , aber ich muss diesen Alias ​​für localhost hinzufügen, um den Produktionsserver nicht zu unterbrechen;

Dockerfile Fragment:

%Vor%

Mein docker build Ausgabebeispiel:

%Vor%     
Vardius 12.10.2016, 16:46
quelle

2 Antworten

4

Docker verwaltet die /etc/hosts -Datei für Sie. /etc/host wird nicht funktionieren.

Sie können der Docker-DNS-Diensterkennung mit der Option --add-host jedoch zusätzliche Hosts hinzufügen, wenn Sie docker create oder docker run ausführen.

Dies ist aus der Ausgabe von docker run --help :

%Vor%

Beachten Sie jedoch, dass 127.0.0.1 aus einem Container Sie nicht zum Container-Host bringt, sondern Sie auf dem Container landen wird, da es über eine eigene Schnittstelle 127.0.0.1 verfügt.

Die eth0-IP-Adresse Ihres Andock-Hosts kann von Ihrem Container aus weitergeleitet werden. Sie könnten das in Ihrem Argument --add-host verwenden. Zum Beispiel, wenn mein Docker Host 192.168.1.43 in meinem lokalen Netzwerk ist, könnte ich docker run --add-host locdev:192.168.1.43 ... tun. Zu diesem Zeitpunkt wird locdev vom Container zurück in diese IP-Adresse aufgelöst.

    
programmerq 12.10.2016, 17:55
quelle
0

Besser als die Adresse von eth0 (oder einer anderen Schnittstelle auf Ihrem Host) verwenden Sie einfach die Adresse des Standard-Gateways in Ihrem Docker-Container. Dies ist die Adresse der vom Docker verwalteten Bridge auf Ihrem Host, mit dem der Container verbunden ist. Sie können dies wie folgt erhalten:

%Vor%

Das wird immer eine Adresse Ihres Gastgebers sein.

    
larsks 12.10.2016 17:59
quelle

Tags und Links