Comment utiliser bash avec une image Docker basée sur Alpine?


212

J'ai créé une image docker depuis openjdk: 8-jdk-alpine mais lorsque j'essaie d'exécuter des commandes simples, j'obtiens les erreurs suivantes:

RUN bash
/bin/sh: bash: not found

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

26
Pour les googleurs:docker run --rm -i -t alpine /bin/sh
Nabil Kadimi

Démarrer le conteneur (de manière interactive): docker exec -it container_id / bin / sh
user2243747

Réponses:


339

L'image de docker Alpine n'a pas bash installé par défaut. Vous devrez ajouter les commandes suivantes pour obtenir bash:

RUN apk update && apk add bash

Si vous utilisez, Alpine 3.3+vous pouvez simplement faire

RUN apk add --no-cache bash

pour conserver une taille d'image Docker petite. (Merci au commentaire de @sprkysnrky)


4
Ce apk upgraden'est pas obligatoire.
Matt

1
Je préfère utiliser la recommandation de @Yuva en utilisant RUN /bin/shau lieu de RUN bin/bash
Alex Montoya

1
Cela dépend entièrement de vous, de nombreuses personnes ont besoin de bashfonctionnalités spécifiques.
anubhava

222

Essayez d'utiliser RUN /bin/shau lieu de bash.


35
OP a demandé bash. sh n'est pas bash.
phil294

117
Mais c'est un commentaire très utile de toute façon - la plupart des gens iront bien avec sh - et cela ne nécessite pas 50 Mo supplémentaires de taille d'image
kboom

6
Facile et simple. La plupart du temps, nous n'avons besoin que d'exécuter des commandes de merde (ls, ps, peu importe), sh couvre ces scénarios. Merci!
Bevilaqua

6
Je cherchais bash, mais sh a également aidé :)
Vedran Maricevic.

6
@kboom, le bashpackage ajoute environ 4 Mo à la taille de alpine:3.8, le doublant à peu près, mais toujours loin de 50 Mo.
valiano

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

travaillé pour moi.


1
La partie initiale de la commande RUN n'est pas nécessaire. Vous pouvez simplement écrire RUN apk add --no-cache bashdirectement
Meiogordo

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.