Lokalnie uruchamiam kontener dokera, aby rozwiązać jego stan. Nie zawsze chcę wykonać RUN
/ENTRYPOINT
, Często chcę dostać się do działającego pojemnika, zrobić kilka rzeczy, a następnie uruchomić RUN
/ENTRYPOINT
.
Byłoby super wygodne mieć RUN
/ENTRYPOINT
dostępne po I docker run bash
po prostu naciskając górny klawisz. Pomyślałem więc, że byłoby miło, gdybym mógł zmodyfikować historię history -s ...
w Dockerfile
. W ten sposób, tak szybko jak ja docker run bash
Mogę po prostu nacisnąć i mieć RUN
/ENTRYPOINT
dostępny.
Kiedy umieściłem to w pliku dokera, otrzymałem ten błąd:
/bin/sh: 1: history: not found
Czy istnieje sposób ustawienia historii bash w pliku Docker?
Odpowiedzi:
1 dla odpowiedzi № 1Otrzymujesz błąd, ponieważ RUN
komendy działają /bin/sh
, który nie ma history
dostępne polecenie.
Aby to zadziałało, musisz uruchomić interaktywną powłokę bash podczas kompilacji, dzięki czemu zapiszesz swoją historię.
RUN bash -ic "history -s foobar"
To powinno pozostawić plik historii z foobar
jako jego najnowszy (i prawdopodobnie jedyny) wpis.
Pojawi się błąd podczas kompilacji na temat ioctl ... to jest normalne, ponieważ interaktywne bash spodziewa się znaleźć terminal, a tam nie będzie, ale powinno nadal działać dobrze.
bash: nie można ustawić terminalowej grupy procesów (1): Nieodpowiedni ioctl dla urządzenia
bash: brak kontroli zadań w tej powłoce
Zauważ, że będzie to zapisane dla użytkownika, dla którego uruchomisz polecenie jako. Jeśli obraz przełączy się na użytkownika innego niż root przy użyciu USER
oświadczenie, powinieneś umieścić to po USER
tak, aby był przechowywany w komputerze, w którym twój obraz jest uruchamiany.