Mam problem z ustawieniem nazwy hosta na działającym kontenerze dokera. Mam również problem ze zrozumieniem, jak określić nazwę hosta po uruchomieniu obrazu.
Zacząłem kontener z pobranego obrazu:
sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss
Ale zapomniałem podać nazwę hosta przez -h
; Jak mogę określić nazwę hosta teraz, gdy kontener jest uruchomiony?
run
obrazu, a nie podczas uruchamiania kontenera.docker restart
Odpowiedzi:
Edycja
/etc/hostname
to jedna rzecz, do której potrzebujesz dostępu ssh wewnątrz kontenera. W przeciwnym razie możesz podkręcić pojemnik z-h
opcją.Aby ustawić nazwy hosta i domeny:
źródło
docker exec /bin/bash
na działającym kontenerze, nie trzeba instalowaćssh
(co jest złą praktyką do celów administracyjnych).hostname
(brak możliwości). Uruchomieniedocker run -h <hostname> <image> <container-name>
tworzy nowy kontener o podanej nazwie hosta.Zatrzymaj pojemnik i obsługę
Edytuj plik konfiguracyjny (JSON) [Najpierw wykonaj kopię zapasową]
/var/lib/docker/containers/CONTAINER_ID/config.json
Zastąpić
z
Uruchom kontener i serwis
(Opcjonalnie możesz także dołączyć dokera)
Szczegółowe informacje na temat dokerów (tj. CONTAINER_NAME, CONTAINER_ID) można uzyskać, uruchamiając
źródło
Docker version 17.05.0-ce, build 89658be
Ponowne uruchomienie kontenera byłoby najłatwiejszą opcją - ale możesz także edytować / etc / hostname i przejść od tego miejsca.
źródło
/etc/hostname
nie ma żadnego efektu po ponownym uruchomieniu, ponieważ jest nadpisywana za każdym razem „prawdziwą” nazwą hosta zarządzaną przez dokera. Nie możesz uruchomićhostname
na kontenerze, ponieważ kontener nie ma możliwości tej operacji (domyślnie i nie chcesz tego zmieniać)/etc/hostname
i nie restartowanie kontenera nie ma sensu.Jeśli używasz
--net=host
, nie możesz zmienić nazwy hosta z-h
lub z dokera.Zobacz https://github.com/docker/docker/issues/5708
źródło
https://evolvingweb.ca/blog/changing-docker-hostnames-namespaces opisuje sposób na zrobienie tego. Podstawową ideą jest użycie
docker inspect
pid dla kontenera, a następnie wprowadzenie przestrzeni nazw kontenera za pośrednictwemnsenter
. Uruchomieniehostname
w tym obszarze nazw spowoduje zmianę nazwy hosta dla instancji dokera, która udostępnia tę przestrzeń nazw.źródło
Jak zauważyło kilku innych, można to zmienić w przypadku kontenerów, modyfikując
config.v2.json
plik.Tylko upewnij się, że usługa Docker jest zatrzymana przed edycją pliku, w przeciwnym razie będzie to OVERWRITTEN. Kroki MUSZĄ zostać wykonane w tej kolejności
Zmodyfikuj
/var/lib/docker/containers/CONTAINER_ID/config.v2.json
plik - -Uruchom usługę Docker
Zostało to potwierdzone, działając dla mnie na Docker v17.05.0-ce, na kontenerze przy użyciu
--net=host
. Modyfikacja/etc/hostname
pliku nie działa, a plik jest po prostu nadpisywany.źródło
W
znajdź i ustaw
źródło
Docker version 17.05.0-ce, build 89658be
. Config zostaje nadpisany, kto wie skąd. A sama nazwa hosta nie zmienia się po ponownym uruchomieniu.