Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Wrapper examples fail when the script is created with default permissions

Fermée Adaptée aux débutants
#26,447 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@maheshrijal y travaille déjà.

Depuis le 26/10/2026.

  • #26448 par @maheshrijal — ouverte

Évaluation

Difficulté
1/5
Temps estimé
1-3 heures
Accessibilité débutants
86/100
Type d'issue
Documentation
Clarté
Clairement spécifiée
Activité
Active
Stack technique
docker, markdown
Domaine
documentation

Piste de recherche

Ouvrez la page de documentation sur les conteneurs multi-services et repérez les deux exemples de Dockerfile avec un script wrapper, qui utilisent COPY et CMD ./my_wrapper_script.sh. Vérifiez comment les permissions du script sont gérées dans chaque exemple ; la reproduction de l’issue montre que le mode par défaut échoue avec le code de sortie 126, tandis que COPY --chmod=755 fonctionne. Le travail est terminé lorsque les deux exemples rendent le script wrapper exécutable ou indiquent clairement aux lecteurs qu’ils doivent définir son droit d’exécution avant la compilation.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Is this a docs issue?
  • My issue is about the documentation content or website
Type of issue

Information is incorrect

Description

Both wrapper-script Dockerfiles copy my_wrapper_script.sh and run it with CMD ./my_wrapper_script.sh. A newly created script normally has mode 0644 under umask 022, and Docker COPY preserves that mode. The container then exits with status 126 because the wrapper cannot be executed. This happens before the wrapper's Bash code runs.

This minimal reproduction shows the failure, a Dockerfile COPY --chmod=755 control, and a host-executable-file control. It requires Docker Engine and access to pull ubuntu:latest.

set -eu
workdir=$(mktemp -d)
cd "$workdir"
umask 022
cat > my_wrapper_script.sh <<'EOF_SCRIPT'
#!/bin/bash
exit 0
EOF_SCRIPT
cat > Dockerfile <<'EOF_DOCKERFILE'
FROM ubuntu:latest
COPY my_wrapper_script.sh my_wrapper_script.sh
CMD ./my_wrapper_script.sh
EOF_DOCKERFILE

base_image="wrapper-mode-base-$$"
chmod_image="wrapper-mode-chmod-$$"
host_image="wrapper-mode-host-$$"
docker build --no-cache -t "$base_image" .
set +e
output=$(docker run --rm "$base_image" 2>&1)
status=$?
set -e
printf 'default-mode run exit: %s\n%s\n' "$status" "$output"
if [ "$status" -ne 126 ]; then
  echo "Expected exit 126; got $status" >&2
  exit 1
fi
if printf '%s\n' "$output" | grep -Fq 'Permission denied'; then
  :
else
  echo 'Expected a permission-denied error' >&2
  exit 1
fi

sed 's/^COPY my_wrapper_script/COPY --chmod=755 my_wrapper_script/' Dockerfile > Dockerfile.chmod
docker build --no-cache -f Dockerfile.chmod -t "$chmod_image" .
docker run --rm "$chmod_image"

chmod +x my_wrapper_script.sh
docker build --no-cache -t "$host_image" .
docker run --rm "$host_image"

The second, Bash job-control recipe has the same COPY and CMD instructions. It was also tested separately: the published Dockerfile fails before Bash starts, and adding only --chmod=755 lets the wrapper start and finish in a TTY run. The TTY matters because its fg command can race with a short-lived stand-in under non-TTY input.

Location

https://docs.docker.com/engine/containers/multi-service_container/

Suggestion

Add --chmod=755 to the wrapper COPY instruction in both Dockerfile examples, or state that readers must make the wrapper executable before building the image.

Langage dominant
Markdown
Étoiles
4.7k
Forks
8.5k
Merge moyen
2 j 9 h
PR mergées (30 j)
136

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de docker/docs

Toutes les issues de docker/docs

Issues similaires

Plus d'issues Documentation

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.