Làm thế nào để sử dụng bash với hình ảnh docker dựa trên Alpine?


210

Tôi đã tạo một hình ảnh docker từ openjdk: 8-jdk-alpine nhưng khi tôi cố gắng thực hiện các lệnh đơn giản, tôi gặp các lỗi sau:

RUN bash
/bin/sh: bash: not found

RUN ./gradlew build
env: can't execute 'bash': No such file or directory

26
Đối với nhân viên của Google:docker run --rm -i -t alpine /bin/sh
Nabil Kadimi

Bắt đầu chứa (tương tác):
docker exec -it

Câu trả lời:


335

Hình ảnh docker Alpine không được cài đặt bash theo mặc định. Bạn sẽ cần thêm các lệnh sau để có được bash:

RUN apk update && apk add bash

Nếu bạn đang sử dụng Alpine 3.3+thì bạn có thể làm

RUN apk add --no-cache bash

để giữ kích thước hình ảnh docker nhỏ. (Cảm ơn bình luận từ @sprkysnrky)


4
Các apk upgradelà không cần thiết.
Matt

1
Tôi thích sử dụng giới thiệu của @Yuva bằng cách sử dụng RUN /bin/shthay vì RUN bin/bash
Alex Montoya

1
Điều đó hoàn toàn phụ thuộc vào bạn, nhiều người cần bashtính năng cụ thể.
anubhava

215

Hãy thử sử dụng RUN /bin/shthay vì bash.


35
OP yêu cầu bash. sh không phải là bash.
phil294

114
Nhưng dù sao đây cũng là nhận xét rất hữu ích - hầu hết mọi người sẽ ổn với sh - và nó không yêu cầu thêm 50mb kích thước hình ảnh
kboom

6
Dễ dàng và đơn giản. Hầu hết chúng ta chỉ cần chạy các lệnh shitty (ls, ps, bất cứ điều gì), sh bao gồm các kịch bản đó. cảm ơn!
Bevilaqua

6
Tôi đã tìm kiếm bash, nhưng sh cũng giúp đỡ :)
Vedran Maricevic.

6
@kboom bashgói thêm khoảng 4 MB vào kích thước alpine:3.8, gấp đôi nó, nhưng vẫn còn xa 50MB.
valiano

19
RUN /bin/sh -c "apk add --no-cache bash"

đã làm cho tôi.


1
Phần ban đầu của lệnh RUN là không cần thiết. Bạn chỉ có thể viết RUN apk add --no-cache bashtrực tiếp
Meiogordo

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.