Como usar o bash com uma imagem de janela de encaixe Alpine?

211

Criei uma imagem do docker a partir do openjdk: 8-jdk-alpine, mas quando tento executar comandos simples, obtenho os seguintes erros:

RUN bash
/bin/sh: bash: not found

RUN ./gradlew build
env: can't execute 'bash': No such file or directory
diugalde
fonte
26
Para os googlers:docker run --rm -i -t alpine /bin/sh
Nabil Kadimi
Iniciar contêiner (interativamente): docker exec -it container_id / bin / sh
user2243747 7/07

Respostas:

337

A imagem do Docker Alpine não tem o bash instalado por padrão. Você precisará adicionar os seguintes comandos para obter bash:

RUN apk update && apk add bash

Se você estiver usando Alpine 3.3+, você pode simplesmente fazer

RUN apk add --no-cache bash

para manter o tamanho da imagem do Docker pequeno. (Obrigado a comentar de @sprkysnrky)

anubhava
fonte
4
O apk upgradenão é necessário.
Matt
1
Eu prefiro usar a recomendação de @Yuva usando em RUN /bin/shvez de RUN bin/bash
Alex Montoya
1
Isso depende inteiramente de você, muitas pessoas precisam de bashrecursos específicos.
anubhava 20/04
219

Tente usar em RUN /bin/shvez de bash.

Yuva
fonte
35
OP pediu bash. sh não é festança.
phil294
115
Mas isso é comentário muito útil de qualquer maneira - a maioria das pessoas vai ficar bem com sh - e não requer 50MB adicional de tamanho da imagem
kboom
6
Fácil e direto. Na maioria das vezes, precisamos apenas executar comandos de merda (ls, ps, o que for), sh abrange esses cenários. obrigado!
Bevilaqua
6
Eu estava procurando por festança, mas ela também ajudou :)
Vedran Maricevic.
6
@kboom o bashpacote adiciona cerca de 4 MB ao tamanho de alpine:3.8, aproximadamente o dobro, mas ainda está longe de 50 MB.
Valiano '01
19
RUN /bin/sh -c "apk add --no-cache bash"

trabalhou para mim.

user1738546
fonte
1
A parte inicial do comando RUN é desnecessária. Você pode escrever RUN apk add --no-cache bashdiretamente
Meiogordo
1

Para instalar o bash, você pode:

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

Se você não deseja adicionar tamanho extra à sua imagem, use ashou shque seja fornecido com alpino.

Referência: https://github.com/smebberson/docker-alpine/issues/43

Sahith Vibudhi
fonte