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

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)


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.


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.


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.