Jestem nowy w dockingu. Odkryłem, że możemy ustawić zmienne środowiskowe za pomocą instrukcji ENV w pliku Dockerfile. Ale w jaki sposób można ustawić alias bash dla długich poleceń w Dockerfile?Jak ustawić aliasy bash dla kontenerów doków w pliku Dockerfile?
Odpowiedz
zasadzie jak zawsze, dodając go do użytkownika .bashrc
:
FROM foo
RUN echo 'alias hi="echo hello"' >> ~/.bashrc
Jak zwykle to będzie działać tylko dla powłok interaktywnych:
docker build -t test .
docker run -it --rm --entrypoint /bin/bash test hi
/bin/bash: hi: No such file or directory
docker run -it --rm test bash
$ hi
hello
Dla nieinterakcyjnych powłok należy stworzyć mały skrypt i umieścić go na swojej ścieżce, tj .:
RUN echo -e '#!/bin/bash\necho hello' > /usr/bin/hi && \
chmod +x /usr/bin/hi
Jeśli twój alias nam Parametry es (np. hi Jim
->hello Jim
), wystarczy dodać "[email protected]"
:
RUN echo -e '#!/bin/bash\necho hello "[email protected]"' > /usr/bin/hi && \
chmod +x /usr/bin/hi
Dzięki temu możesz podać przykład nieinteraktywnej powłoki? Szukałem ENTRYPOINT i CMD, aby rozwiązać ten – c24b
Alias Bash działa tylko w powłokach interaktywnych. Po prostu utwórz mały skrypt powłoki i umieść na swojej ścieżce taki sam efekt jak alias. Zaktualizowano odpowiedź za pomocą prostego przykładu. –
Uwaga: od https://stackoverflow.com/a/8467449 powinieneś raczej użyć ** printf ** zamiast * echo *, aby zapewnić bardziej spójne zachowanie. Tak printf '#!/Bin/bash \ necho cześć ">/usr/bin/hi chmod + x/usr/bin/hi – barraq
Można użyć punkt_wejścia, ale to nie będzie działać dla aliasu, w Dockerfile:
ADD dev/entrypoint.sh /opt/entrypoint.sh
ENTRYPOINT ["/opt/entrypoint.sh"]
Twój entrypoint.sh
#!/bin/bash
set -e
function dev_run()
{
}
export -f dev_run
exec "[email protected]"
(Szybki kopiuj/wklej, przepraszam)
Zwróć uwagę, że niektóre obrazy Docker mogły już zastąpić domyślny punkt wejścia (taki jak obraz podstawowy fuzji). –
Aby utworzyć alias istniejącego polecenia, może także używać ln -s
:
ln -s $(which <existing_command>) /usr/bin/<my_command>
- 1. Jak przekazać właściwość System do kontenerów doków?
- 2. Jak ustawić nazwę obrazu w pliku Dockerfile?
- 3. Wywoływanie bash aliasy prowizji
- 4. Jak uzyskać dokładną datę dla obrazów doków?
- 5. Efektywnie za pomocą wielu kontenerów doków w jednym hoście
- 6. Polecenie do ponownego uruchamiania wszystkich uruchomionych kontenerów doków?
- 7. Uruchamianie skryptu w Dockerfile
- 8. Aliasy dla czcionek w CSS
- 9. Dockerfile: Dockerfile
- 10. Jak ustawić niestandardowy kontekst dla docker.build w jenkinsfile
- 11. Jak ustawić adres MAC kontenerów Docker LXC?
- 12. Jak dodać użytkownika do pliku dockerfile?
- 13. Docker: Ustaw nazwę kontenera wewnątrz pliku Dockerfile
- 14. W pliku Dockerfile, jak zaktualizować zmienną środowiskową PATH?
- 15. Data.Foldable dla nieuporządkowanych kontenerów
- 16. stała poprawność dla kontenerów
- 17. Aliasy Git przechowywane w pochodzie
- 18. Aliasy VB.NET (jak w C#)
- 19. Sposób kopiowania/dodawania pliku do bieżącego pliku WORKDIR w Dockerfile
- 20. Jak mogę budować obrazy doków bez okna dokowanego?
- 21. Docker: Dockerfile vs Döcker-compose.yml
- 22. Wiele kontenerów doków w jednej instancji EC2 za pośrednictwem AWS ECS
- 23. Jak uzyskać aliasy działające w .gitconfig?
- 24. Jak zadeklarować wielu opiekunów w moim pliku Dockerfile?
- 25. hibernacji, aliasy
- 26. Jak przekazać zmienne środowiskowe do kontenerów Docker?
- 27. Znajdź listę publicznych obrazów rejestru kontenerów Google
- 28. Jak zrobić coś dla każdego pliku w katalogu używając bash?
- 29. Bash ekspansja klamra nie działa na komendę Dockerfile RUN
- 30. zagnieżdżanie aliasy w C#
pseudonimy zostały uznane za przestarzałe zasadniczo * bardzo * długi czas. Użyj funkcji. Nie ma już potrzeby * kiedykolwiek * używać aliasu. Jak to się dzieje, że te podejścia z końca lat 80. utrzymują się tak długo? –