Używam obrazu Docker, który został zbudowany za pomocą polecenia USER, aby użyć użytkownika innego niż root o nazwie dev
. Wewnątrz kontenera jestem „dev”, ale chcę edytować /etc/hosts
plik.
Więc muszę być rootem. Próbuję polecenia su, ale jestem proszony o podanie hasła roota.
Jakie jest domyślne hasło użytkownika root w kontenerze Docker?
docker exec -u 0 -it mycontainer bash
. (patrzH6
odpowiedź)Odpowiedzi:
Możesz zalogować się do kontenera Docker przy użyciu użytkownika root (ID = 0) zamiast podanego domyślnego użytkownika, gdy korzystasz z tej
-u
opcji. Na przykładz dokumentacji Docker
źródło
docker run -u 0 -it mycontainer bash
W końcu postanowiłem odbudować moje obrazy Dockera, aby zmienić hasło roota na coś, co będę wiedział.
lub
źródło
Można to zrobić na kilka sposobów.
Aby uruchomić Docker zastępujący ustawienie USER
lub
Dokonaj niezbędnych uprawnień do plików itp. Podczas kompilacji obrazu w pliku Docker
Jeśli wszystkie pakiety są dostępne w obrazie Linuksa,
chpasswd
w pliku dokera przed narzędziem USER.źródło
Jestem w stanie sprawić, że będzie działać z poniższym poleceniem.
źródło
Miałem dokładnie ten problem, że nie mogłem su do rootowania, ponieważ działałem w kontenerze jako nieuprzywilejowany użytkownik.
Ale nie chciałem odbudowywać nowego obrazu, jak sugerują poprzednie odpowiedzi.
Zamiast tego odkryłem, że mogę uzyskać dostęp do kontenera jako root za pomocą „nsenter”, patrz: https://github.com/jpetazzo/nsenter
Najpierw określ PID swojego kontenera na hoście:
Następnie użyj nsenter, aby wprowadzić kontener jako root
źródło
sudo nsenter --target <PID> --mount --uts --ipc --net --pid
źródło
Uzyskaj powłokę działającego kontenera i zmień hasło roota:
źródło
Aby utworzyć / zmienić hasło roota w działającym kontenerze
źródło
Hasło to „ubuntu” dla użytkownika „ubuntu” (przynajmniej w oknie dokowanym dla ubuntu: 14.04.03).
Uwaga: „Ubuntu” jest tworzone po uruchomieniu kontenera, więc jeśli tylko to zrobisz:
Otrzymasz monit o rootowanie bezpośrednio. Stamtąd możesz wymusić zmianę hasła roota, zatwierdzić kontener i opcjonalnie oznaczyć go (-f) na Ubuntu: najnowsze jak to:
Musisz odbudować swoje ewentualne zależności od Ubuntu: najnowszy.
źródło
Sugeruję, że lepszym rozwiązaniem jest podanie
--add-host NAME:IP
argumentu do uruchomienia dokera podczas uruchamiania kontenera. To zaktualizuje/etc/hosts/
plik bez potrzeby rootowania.W przeciwnym razie możesz zmienić
USER
ustawienie, podając-u USER
flagę dodocker run
. Odradzałbym to jednak, ponieważ tak naprawdę nie powinieneś zmieniać rzeczy w działającym kontenerze. Zamiast tego wprowadź zmiany w Dockerfile i utwórz nowy obraz.źródło
-u
flagi, aby zmienić użytkownika. Nie sądzę, że możesz to zrobić z wnętrza pojemnika.Możesz użyć polecenia root USER w swoim pliku Docker.
źródło
Po uruchomieniu kontenera będziesz rootem, ale nie będziesz wiedział, co to jest pw roota. Aby ustawić to na coś, co znasz, po prostu użyj „passwd root”. Zrób migawkę / zatwierdź kontener, aby zapisać swoje działania.
źródło
Domyślnie kontenery dokowane działają jako
root
użytkownik.Jeśli nadal używasz kontenera, możesz użyć
exit
polecenia, aby wrócić doroot
użytkownika (domyślnego użytkownika) zamiast ponownie uruchamiać kontener.Przykład -
źródło
spróbuj wykonać następujące polecenie, aby uzyskać dostęp do konta root
źródło
W niektórych przypadkach musisz mieć możliwość robienia takich rzeczy pod użytkownikiem za pomocą
sudo
(np. Aplikacja działająca w kontenerze zapewnia użytkownikom powłokę). Po prostu dodaj to do swojego Dockerfile:Teraz pod domyślnym użytkownikiem obrazu
user
będziesz mógł,sudo
używając hasła ustawionego w linii 3.Zobacz, jak wygenerować skrót hasłem
useradd
tutaj lub tutaj .źródło