Untuk memulai shell interaktif untuk gambar Ubuntu kita dapat menjalankan:
ole@T:~$ docker run -it --rm ubuntu
root@1a6721e1fb64:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
Tetapi ketika ini dijalankan untuk gambar Alpine Docker , hasil berikut:
ole@T:~$ docker run -it --rm alpine
Error response from daemon: No command specified
Apa perintah untuk memulai shell interaktif dalam wadah berbasis Alpine?
-d
pilihan.ash
dan tidakbash
, yang, karena tidak terlalu mengenal Alpine, adalah apa yang membuat saya dan mencegah saya mengakses wadah sebelumnya.Biasanya, gambar Alpine Linux tidak mengandung
bash
, Sebaliknya Anda dapat menggunakan/bin/ash
,/bin/sh
,ash
atau hanyash
./ bin / ash
/ bin / sh
Abu
SH
Saya harap informasi ini membantu Anda.
sumber
/bin/ash
danash
? Mirip untuk/bin/sh
dansh
.ash
hanyalah tautan simbolis/bin/ash
. Beberapa distribusi linux tidak memiliki tautan simbolik.Saat ini, gambar Alpine akan di-boot langsung ke
/bin/sh
default, tanpa harus menentukan shell untuk dieksekusi:Hal ini karena
alpine
Dockerfiles gambar sekarang mengandungCMD
perintah, yang menentukan shell untuk mengeksekusi ketika wadah dimulai:CMD ["/bin/sh"]
.Dalam versi gambar Alpine yang lebih lama (pra-2017), perintah CMD tidak digunakan, karena Docker digunakan untuk membuat lapisan tambahan untuk CMD yang menyebabkan ukuran gambar meningkat. Ini adalah sesuatu yang ingin dihindari oleh pengembang gambar Alpine. Dalam versi Docker baru-baru ini (1,10+), CMD tidak lagi menempati lapisan, dan karena itu ditambahkan ke
alpine
gambar. Oleh karena itu, selama CMD tidak diganti, gambar Alpine terbaru akan di-boot/bin/sh
.Untuk referensi, lihat komitmen berikut untuk Dockerfiles Alpine resmi oleh Glider Labs:
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92b17cfc
sumber
Jika wadah sudah berjalan:
sumber