Ich habe Probleme beim Festlegen des Hostnamens für einen ausgeführten Docker-Container. Ich habe auch Probleme beim Festlegen des Hostnamens, nachdem das Image gestartet wurde.
Ich habe einen Container von einem Bild gestartet, das ich heruntergeladen habe:
sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss
Aber ich habe vergessen, den Hostnamen durch anzugeben -h
. Wie kann ich den Hostnamen jetzt angeben, wenn der Container ausgeführt wird?
run
ein Bild, nicht, wenn Sie einen Container starten.docker restart
DokumentationAntworten:
Bearbeiten
/etc/hostname
ist eine Sache, für die Sie SSH-Zugriff im Container benötigen. Andernfalls können Sie den Container mit der-h
Option drehen .So legen Sie die Host- und Domainnamen fest:
quelle
docker exec /bin/bash
auf einem laufenden Container, keine Notwendigkeit zu installierenssh
(was imho eine schlechte Praxis für Verwaltungszwecke ist).hostname
(fehlende Fähigkeit) ändern . Beim Ausführendocker run -h <hostname> <image> <container-name>
wird ein neuer Container mit dem angegebenen Hostnamen erstellt.Behälter und Service stoppen
Konfigurationsdatei bearbeiten (JSON) [Sie sollten zuerst ein Backup erstellen]
/var/lib/docker/containers/CONTAINER_ID/config.json
Ersetzen
mit
Behälter und Service starten
(Optional können Sie auch Docker anhängen)
Details zu Dockern (dh CONTAINER_NAME, CONTAINER_ID) können durch Ausführen abgerufen werden
quelle
Docker version 17.05.0-ce, build 89658be
Ein Neustart des Containers ist die einfachste Option. Sie können jedoch auch / etc / hostname bearbeiten und von dort aus fortfahren.
quelle
/etc/hostname
hat nach dem Neustart keine Auswirkung, da es jedes Mal mit dem "echten" Hostnamen überschrieben wird, der vom Docker verwaltet wird. Sie können nichthostname
auf dem Container ausgeführt werden, da der Container keine Funktionen für diesen Vorgang hat (standardmäßig, und Sie möchten das nicht ändern)/etc/hostname
und Nicht-Neustarten des Containers hat keinen Zweck.In diesem Fall können Sie
--net=host
den Hostnamen weder-h
im Docker noch innerhalb des Dockers ändern .Siehe https://github.com/docker/docker/issues/5708
quelle
https://evolvingweb.ca/blog/changing-docker-hostnames-namespaces beschreibt eine Möglichkeit, dies zu tun. Die Grundidee besteht darin
docker inspect
, die PID des Containers zu ermitteln und dann den uts-Namespace des Containers über einzugebennsenter
. Wenn Siehostname
in diesem Namespace arbeiten, wird der Hostname für die Docker-Instanz geändert, die diesen Namespace gemeinsam nutzt.quelle
Wie einige andere angemerkt haben, kann dies für Container durch Ändern der
config.v2.json
Datei geändert werden.Stellen Sie sicher, dass der Docker-Dienst beendet ist, bevor Sie die Datei bearbeiten. Andernfalls wird die Datei überschrieben. Die Schritte müssen in dieser Reihenfolge durchgeführt werden
Ändern Sie die
/var/lib/docker/containers/CONTAINER_ID/config.v2.json
Datei - -Starten Sie den Docker-Dienst
Es wurde bestätigt, dass ich mit Docker v17.05.0-ce an einem Container mit arbeite
--net=host
. Das Ändern der/etc/hostname
Datei funktioniert nicht und die Datei wird nur überschrieben.quelle
Im
finden und einstellen
quelle
Docker version 17.05.0-ce, build 89658be
. Konfig wird überschrieben, wer weiß woher. Und der Hostname selbst ändert sich nach dem Neustart nicht.