/ / Jak ustawić historię poleceń w pliku Dockerfile - bash, docker, sh

Jak ustawić historię poleceń w pliku Dockerfile - bash, docker, sh

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 bashMogę 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 № 1

Otrzymujesz 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.