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--rm
Rimuovi automaticamente il contenitore quando esce (docker run --help
)-i
Modalità interattiva (Mantieni STDIN aperto anche se non collegato)-t
Assegna 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