Di solito, un'immagine Alpine Linux non contiene bash , Invece puoi usare /bin/ash , /bin/sh , ash o solo sh .
/bin/cenere
docker run -it --rm alpine /bin/ash
/bin/sh
docker run -it --rm alpine /bin/sh
cenere
docker run -it --rm alpine ash
sh
docker run -it --rm alpine sh
Spero che queste informazioni ti siano d'aiuto.
[email protected]:~$ docker run -it --rm alpine /bin/ash
(inside container) / #
Opzioni usate sopra:
/bin/ashè Ash (Almquist Shell) fornito da BusyBox--rmRimuovi automaticamente il contenitore quando esce (docker run --help)-iModalità interattiva (Mantieni STDIN aperto anche se non collegato)-tAssegna uno pseudo-TTY
Al giorno d'oggi, le immagini alpine si avvieranno direttamente in /bin/sh per impostazione predefinita, senza dover specificare una shell da eseguire:
$ sudo docker run -it --rm alpine
/ # echo $0
/bin/sh
Questo dal alpine image I file Docker ora contengono un CMD comando, che specifica la shell da eseguire all'avvio del contenitore:CMD ["/bin/sh"] .
Nelle versioni precedenti dell'immagine Alpine (precedenti al 2017), il comando CMD non veniva utilizzato, poiché Docker creava un livello aggiuntivo per CMD che causava l'aumento delle dimensioni dell'immagine. Questo è qualcosa che gli sviluppatori di immagini alpine volevano evitare. Nelle recenti versioni di Docker (1.10+), CMD non occupa più un livello, quindi è stato aggiunto a alpine immagini. Pertanto, fintanto che CMD non viene sovrascritto, le immagini alpine recenti si avvieranno in /bin/sh .
Per riferimento, vedere il seguente commit nei file Docker Alpine ufficiali di Glider Labs:
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53a96578d4900cb5b