Sono nuovo alla finestra mobile. Ho scoperto che siamo in grado di impostare variabili d'ambiente utilizzando l'istruzione ENV nel Dockerfile. Ma come si impostano gli alias bash per i comandi lunghi in Dockerfile?Come impostare gli alias bash per i contenitori docker in Dockerfile?
risposta
Fondamentalmente come fai sempre, aggiungendolo al dell'utente .bashrc
:
FROM foo
RUN echo 'alias hi="echo hello"' >> ~/.bashrc
Come al solito questo funziona solo per le shell interattive:
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
Per shell non interattive si dovrebbe creare un piccolo script e mettilo nel tuo percorso, ad esempio:
RUN echo -e '#!/bin/bash\necho hello' > /usr/bin/hi && \
chmod +x /usr/bin/hi
Se il tuo alias ci es parametri (es. hi Jim
->hello Jim
), basta aggiungere "[email protected]"
:
RUN echo -e '#!/bin/bash\necho hello "[email protected]"' > /usr/bin/hi && \
chmod +x /usr/bin/hi
Grazie per questo puoi fornire un esempio di shell non interattiva? Stavo cercando ENTRYPOINT e CMD per risolvere questo alias Bash – c24b
che funziona solo in shell interattive. Basta creare un piccolo script di shell e inserire il tuo percorso, lo stesso effetto di un alias. Aggiornato la risposta con un semplice esempio. –
Nota: da https://stackoverflow.com/a/8467449 è preferibile utilizzare ** printf ** anziché * echo * per garantire un comportamento più coerente. Così printf '#!/Bin/bash \ Neco ciao'>/usr/bin/hi chmod + x/usr/bin/hi – barraq
È possibile utilizzare entrypoint, ma non funzionerà per Alias, nella vostra Dockerfile:
ADD dev/entrypoint.sh /opt/entrypoint.sh
ENTRYPOINT ["/opt/entrypoint.sh"]
tuo entrypoint.sh
#!/bin/bash
set -e
function dev_run()
{
}
export -f dev_run
exec "[email protected]"
(Copia/incolla veloce, spiacente)
Fare attenzione che alcune immagini di Docker potrebbero già sovrascrivere i punti di accesso predefiniti (ad esempio l'immagine di base di phishing). –
per creare un alias di un comando esistente, potrebbe anche utilizzare ln -s
:
ln -s $(which <existing_command>) /usr/bin/<my_command>
- 1. Come impostare l'indirizzo MAC per i contenitori LXC Docker?
- 2. Come eseguire la funzione bash in Dockerfile
- 3. Registrazione da contenitori docker multiprocess
- 4. Dockerfile vs Docker image
- 5. Come collegare i contenitori docker alla compilazione?
- 6. convertire lo script Dockerfile in Bash
- 7. build docker interattivo da dockerfile?
- 8. Immagine docker sentinella Redis/Dockerfile
- 9. Docker. Mostra contenitori fermati
- 10. Elenco Docker ha arrestato solo i contenitori
- 11. Come rendere disponibili le variabili ambientali per i comandi di Docker RUN da docker-compose?
- 12. Come passare le variabili di ambiente ai contenitori Docker?
- 13. Come avviare i contenitori Docker all'avvio, gestito con Ansible (Tower)
- 14. Can Docker Engine avvia i contenitori in parallelo
- 15. contenitori Docker mantenere perdere internet
- 16. Collegamento Docker ai contenitori avviati in precedenza
- 17. Spazi negli alias Cygwin/bash?
- 18. docker-compose restituisce ERRORE: impossibile individuare il file Docker: Dockerfile
- 19. Eseguire uno script in Dockerfile
- 20. Alias in bash non funziona
- 21. alias Invocare bash in rake
- 22. Ridimensionamento dei contenitori Docker nel mondo reale
- 23. BASH blank alias 'cd'
- 24. Come copiare le cartelle nell'immagine docker da Dockerfile?
- 25. Will (can) Kubernetes esegue i contenitori Docker sui nodi principali?
- 26. Come aggiungere Dockerfile a una pagina del registro docker?
- 27. Arrestare i contenitori finestra mobile in base al nome dell'immagine e non eseguire errori se non sono in esecuzione contenitori
- 28. Docker: imposta il nome del contenitore all'interno di Dockerfile
- 29. Come utilizzare gli alias in Google Calendar?
- 30. Come visualizzare i livelli immagine Docker sull'hub Docker?
alias sono stati considerati essenzialmente deprecato per un * molto * tempo. Usa una funzione. Non è più necessario * mai * usare un alias. Com'è possibile che questi approcci dalla fine degli anni '80 persistano così a lungo? –