Wrapper examples fail when the script is created with default permissions
Les mainteneurs répondent en général sous 1 jour
É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
- Fournit un Dockerfile ou un fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de docker/docs
-
Debian installation pitfallPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouvertestatus/triage
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
Les mainteneurs répondent en général sous 1 jour
-
Confusing and contradictory information about paths resolving in extendPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouvertestatus/triage
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
[docs-scanner] Inconsistent terminology: 'nested organization' vs 'organization in the company'Peut-être pris @dave123981 l’a pris il y a 1 jour. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour
-
status/triage
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
docker/docs#26484 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de docker/docs
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
Les mainteneurs répondent en général sous 1 jour
-
good first issue help wanted Project:Docs workshop
Difficulté 2/5 1-3 heures Accessibilité débutants 90/100
Les mainteneurs répondent en général sous 1 jour
-
good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour
-
auto-rejected intake mcp-intake needs-salvage priority:high type:feature
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
Ikalus1988/MisakaNet#4221 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour