Как использовать 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
diugalde
источник
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"

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

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

Для установки bash вы можете сделать:

RUN apk add --update bash && rm -rf /var/cache/apk/*

Если вы не хотите добавлять дополнительный размер к своему изображению, вы можете использовать его ashили shпоставляемый с Alpine.

Ссылка: https://github.com/smebberson/docker-alpine/issues/43

Сахит Вибудхи
источник