Ich möchte meine /etc/hosts
Datei während des "Docker-Builds" aktualisieren .
Ich habe die folgende Zeile in Dockerfile hinzugefügt, aber es wird weder die /etc/hosts
Datei aktualisiert noch ein Fehler ausgegeben .
RUN echo "192.168.33.11 mynginx" >> /etc/hosts
Ich muss aktualisieren /etc/hosts
. Kann jemand dies vorschlagen?
docker
dockerfile
hosts
Prakash
quelle
quelle
Antworten:
Mit einer neueren Version von Docker könnte dies mit Docker-Compose und seiner Direktive geschehen
extra_hosts
Kurz gesagt: Ändern Sie
/etc/hosts
Ihren Container, wenn Sie ihn ausführen, und erstellen Sie ihn nicht.Mit Docker 17.x + haben Sie unten eine
docker build --add-host
Erwähnung , aber wie in Ausgabe 34078 und in dieser Antwort kommentiert :Die genannten Lösungen beziehen sich auf die Docker-Komposition, die ich oben vorgeschlagen habe:
quelle
docket exec -it <container name> /bin/bash
und dann den Container-Host des Dockers unter / ect / host mit Ihrem bevorzugten Befehlszeileneditor (vim, emacs, nano, echo ''. >> />) aktualisieren.Sie können die Hostdatei im Image nicht
echo
inRUN
Schritt ändern, da der Docker-Daemon die Datei (/ etc / hosts) und ihren Inhalt (Hosts-Eintrag) verwaltet, wenn Sie einen Container aus dem Image starten.Folgendes kann jedoch verwendet werden, um dasselbe zu erreichen:
Der Schlüssel, der hier zu beachten ist, ist die Verwendung von
exec
Befehlen, wie in der Docker-Dokumentation vorgeschlagen. Bei Verwendung von exec wird der Java-Befehl als PID 1 für den Container festgelegt. Docker-Interrupts reagieren nur darauf.Siehe https://docs.docker.com/engine/reference/builder/#entrypoint
quelle
ENTRYPOINT
ist keine Anweisung für das Bild. Es markiert nur einen Einstiegspunkt, wenn wir einen Container von diesem Image aus ausführen. Dies bedeutet, dass der Host-Eintrag erst existiert, nachdem der Container ausgeführt wurde. Ich denke nicht, dass die Anforderung wesentlich ist. Es muss ein Missverständnis geben.Ich denke, Docker hat kürzlich die
--add-host
Flagge zum Docker-Build hinzugefügt , was wirklich großartig ist.[Bearbeiten] Diese Funktion wurde am 17.04.0-ce aktualisiert
Weitere Informationen zur Verwendung
docker build
der--add-host
Flagge finden Sie unter: https://docs.docker.com/edge/engine/reference/commandline/build/quelle
--add-host
Funktion ist in Docker 12 unter CentOS verfügbar.Da dies immer noch als erste Antwort in Google auftaucht, werde ich eine mögliche Lösung beitragen.
Der Befehl von hier hat überraschenderweise für mich funktioniert (Docker 1.13.1, Ubuntu 16.04):
quelle
Wenn dies für jemanden nützlich ist, hat die
HOSTALIASES
env-Variable für mich funktioniert:quelle
Sie können den folgenden Befehl zum Zeitpunkt der Ausführung von Docker ausführen
docker run [OPTIONS] --add-host example.com:127.0.0.1 <your-image-name>:<your tag>
Hier
example.com
ordne ich localhost127.0.0.1
und seiner Arbeitsweise zu.quelle
Ich verwende AWS Elasticbeanstalk + Docker + Supervisord.
Schnelle Antwort
Fügen Sie einfach Code hinzu
Dockerfile
.quelle
Vollständige Antwort
hosts
Datei vor, die Sie dem Docker-Container hinzufügen möchten.hosts
Datei in den Container, indem Sie die folgende Zeile in das Feld einfügenDockerfile
ENTRYPOINT
oderCMD
oderCRON
Job verwendet, fügen Sie die folgende Befehlszeile ein oder führen Sie diese zumindest im laufenden Container aus:Dockerfile
da die Änderung verloren geht:quelle
Sie können den --add-Host verwenden Option während des Docker-Laufs verwenden.
Verwenden Sie für Ihren Fall: docker run --add-host mynginx: 192.168.33.11 [Bildname]: [Tag]
Dadurch werden Ihre / etc / hosts aktualisiert
Sie können dies mit den folgenden Befehlen überprüfen:
Wenn sh für Sie nicht funktioniert, können Sie bash oder / bin / sh oder / bin / bash ausprobieren
quelle
quelle
Das Folgende hat für mich funktioniert, indem die Datei während des Docker-Laufs anstelle des Docker-Builds bereitgestellt wurde
quelle
Nur eine kurze Antwort, um Ihren Container mit folgenden Funktionen auszuführen:
Sobald der Behälter geöffnet ist:
dann
und dann kannst du
oder:
oder einen beliebigen Editor, den Sie mögen, und öffnen Sie ihn in vim. Hier können Sie beispielsweise Ihre Start-IP auf 0.0.0.0 ändern
quelle