Як використовувати bash із зображенням докера на альпійській основі?


211

Я створив зображення докера з 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
Для googlers:docker run --rm -i -t alpine /bin/sh
Nabil Kadimi

Запустити контейнер (інтерактивно): docker exec -it container_id / bin / sh
user2243747

Відповіді:


335

Зображення альпійського докера за замовчуванням не встановлено 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
Alex Montoya

1
Це залежить лише від вас, багатьом потрібна bashособлива функція.
anubhava

218

Спробуйте використовувати RUN /bin/shзамість bash.


35
ОП попросив баш. ш не баш.
phil294

115
Але це дуже корисний коментар у будь-якому випадку - більшість людей буде добре з sh - і для цього не потрібно додаткових розмірів зображення на 50
Мб

6
Легко і просто. У більшості випадків нам потрібно лише запускати лайливі команди (ls, ps, що завгодно), sh охоплює ці сценарії. Дякую!
Бевілаква

6
Я шукав баш, але й ш допоміг :)
Ведран Марічевич.

6
@kboom bashпакет додає приблизно 4 Мб до розміру alpine:3.8, приблизно збільшивши його в два рази, але все ще далеко від 50 МБ.
valiano

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.