Как использовать bash с изображением докера на основе Alpine?


212

Я создал образ докера из openjdk: 8-jdk-alpine, но когда я пытаюсь выполнить простые команды, я получаю следующие ошибки:

RUN bash
/bin/sh: bash: not found

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

26
Для гуглов:docker run --rm -i -t alpine /bin/sh
Набиль Кадими,

Начальный контейнер (интерактивно): docker exec -it container_id / bin / sh
user2243747

Ответы:


339

В образе Alpine Docker по умолчанию не установлен bash. Вам нужно будет добавить следующие команды, чтобы получить bash:

RUN apk update && apk add bash

Если вы используете, Alpine 3.3+то вы можете просто сделать

RUN apk add --no-cache bash

сохранить размер изображения докера. (Спасибо комментарий от @sprkysnrky)


4
apk upgradeНе требуется.
Мэтт

1
Я предпочитаю использовать рекомендацию @Yuva, используя RUN /bin/shвместо RUN bin/bash
Алекс Монтойя

1
Это полностью зависит от вас, многие люди нуждаются в bashконкретной функции.
анубхава

222

Попробуйте использовать RUN /bin/shвместо Bash.


35
ОП попросил Баш. Ш это не Баш.
phil294

117
Но в любом случае это очень полезный комментарий - большинству людей будет хорошо с sh - и для этого не требуются дополнительные 50 МБ размера изображения
kboom

6
Легко и просто. В большинстве случаев нам нужно только запускать дерьмовые команды (ls, ps, что угодно), sh описывает эти сценарии. Спасибо!
Бевилаква

6
Я искал bash, но sh также помог :)
Ведран Маричевич.

6
Пакет @kboom bashдобавляет около 4 МБ к размеру alpine:3.8, примерно вдвое, но все еще далеко от 50 МБ.
Валиано

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

работал на меня.


1
Начальная часть команды RUN не нужна. Вы можете просто написать RUN apk add --no-cache bashпрямо
Meiogordo

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.