2016-02-28 27 views
46

Để bắt đầu một vỏ tương tác cho hình ảnh ubuntu chúng ta có thể chạy:Bắt đầu từ một Shell trong Docker Alpine container

[email protected]:~$ docker run -it --rm ubuntu 
[email protected]:/# ls 
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var 

Nhưng khi điều này được chạy cho Alpine Docker Image kết quả như sau:

[email protected]:~$ docker run -it --rm alpine 
Error response from daemon: No command specified 

Lệnh bắt đầu một trình bao tương tác trong một thùng chứa cơ sở alpine là gì?

Trả lời

87
[email protected]:~$ docker run -it --rm alpine /bin/ash 
(inside container)/# 

sử dụng trên Options:

  • /bin/ash là Ash (Almquist Shell) được cung cấp bởi BusyBox
  • --rm Tự động loại bỏ các container khi nó thoát (docker run --help)
  • -i chế độ tương tác (Giữ STDIN mở ngay cả khi không được đính kèm)
  • -t A llocate một pseudo-TTY
+0

Có thể bạn nên giải thích giải pháp này và các đối số bổ sung sẽ làm gì. – aneroid

+1

Chắc chắn - ý tưởng tốt - tro là vỏ và --rm loại bỏ các thùng chứa sau khi chạy xong. Vì vậy, nếu bạn muốn vùng chứa vẫn có sẵn sau khi chạy thì hãy bỏ qua việc sử dụng --rm. Tôi đang sử dụng nó vì tôi chỉ thử nghiệm ATM. – Ole

22

Thông thường, một hình ảnh Alpine Linux không chứa bash, Thay vào đó bạn có thể sử dụng /bin/ash, /bin/sh, ash hoặc chỉ sh.

/bin/tro

docker run -it --rm alpine /bin/ash 

/bin/sh

docker run -it --rm alpine /bin/sh 

tro

docker run -it --rm alpine ash 

sh

docker run -it --rm alpine sh 

Tôi hy vọng thông tin này sẽ giúp bạn.

Các vấn đề liên quan