¿Cómo usar bash con una imagen acoplable basada en Alpine?


211

Creé una imagen de docker desde openjdk: 8-jdk-alpine pero cuando trato de ejecutar comandos simples obtengo los siguientes errores:

RUN bash
/bin/sh: bash: not found

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

26
Para googlers:docker run --rm -i -t alpine /bin/sh
Nabil Kadimi el

Iniciar contenedor (interactivamente): docker exec -it container_id / bin / sh
user2243747

Respuestas:


337

Alpine docker image no tiene bash instalado de manera predeterminada. Deberá agregar los siguientes comandos para obtener bash:

RUN apk update && apk add bash

Si estás usando, Alpine 3.3+entonces puedes hacer

RUN apk add --no-cache bash

para mantener pequeño el tamaño de la imagen de la ventana acoplable. (Gracias por comentar de @sprkysnrky)


44
El apk upgradeno es requerido.
Matt

1
Prefiero usar la recomendación de @Yuva usando en RUN /bin/shlugar de RUN bin/bash
Alex Montoya

1
Eso depende totalmente de usted, muchas personas necesitan bashfunciones específicas.
Anubhava

219

Intenta usar en RUN /bin/shlugar de bash.


35
OP pidió bash. sh no es bash.
phil294

115
Pero este es un comentario muy útil de todos modos: la mayoría de la gente estará bien con sh, y no requiere 50mb adicionales de tamaño de imagen
kboom el

66
Fácil y directo. La mayoría de las veces solo necesitamos ejecutar comandos de mierda (ls, ps, lo que sea), sh cubre esos escenarios. ¡Gracias!
Bevilaqua

66
Estaba buscando bash, pero sh también ayudó :)
Vedran Maricevic.

66
@kboom el bashpaquete agrega aproximadamente 4 MB al tamaño de alpine:3.8, duplicándolo aproximadamente, pero aún lejos de 50 MB.
valiano 01 de

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

trabajó para mi.


1
La parte inicial del comando RUN es innecesaria. Puedes escribir RUN apk add --no-cache bashdirectamente
Meiogordo

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.