Podman: --userns=keep-id and --security-opt label=disable are never applied on the Docker Compose path
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 74/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- docker, docker-compose, typescript
- Área
- devops
Línea de trabajo
Lee getPodmanArgs() en src/spec-node/singleContainer.ts y el manejo de Compose en src/spec-node/dockerCompose.ts; después ejecuta los dos comandos devcontainer up de la reproducción. Se considera completado cuando el override docker-compose.devcontainer.*.yml generado aplica userns_mode y security_opt al servicio principal, coincidiendo con el comportamiento de Podman para un solo contenedor.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
The problem
getPodmanArgs() — which adds --security-opt label=disable and, for a non-root remoteUser, --userns=keep-id — lives in src/spec-node/singleContainer.ts and is typed to DevContainerFromDockerfileConfig | DevContainerFromImageConfig. src/spec-node/dockerCompose.ts contains no podman handling at all, so a compose-based dev container on rootless podman gets neither flag.
Result: with rootless podman, the host user maps to container root, so a workspace bind mount appears as root:0 inside and the non-root remoteUser cannot write to it.
Reproduction
devcontainer CLI 0.87.0, podman 5.8.2 rootless, Linux. Two configs differing only in single-container vs compose, both "remoteUser": "vscode", same base image.
repro-sc/.devcontainer/devcontainer.json
{ "name": "sc", "image": "mcr.microsoft.com/devcontainers/base:ubuntu", "remoteUser": "vscode" }
repro-co/.devcontainer/devcontainer.json + docker-compose.yml
{ "name": "co", "dockerComposeFile": "docker-compose.yml", "service": "app",
"workspaceFolder": "/workspace", "remoteUser": "vscode" }
services:
app:
image: mcr.microsoft.com/devcontainers/base:ubuntu
command: sleep infinity
volumes: [ "..:/workspace:cached" ]
devcontainer up --workspace-folder repro-sc --docker-path $(which podman) --docker-compose-path $(which docker-compose)
devcontainer up --workspace-folder repro-co --docker-path $(which podman) --docker-compose-path $(which docker-compose)
--docker-path/--docker-compose-path are explicit only to make podman detection unambiguous; lookupCLIVariant correctly reports Podman in both runs.
Result
podman inspect <sc> --format '{{.HostConfig.UsernsMode}} {{.HostConfig.SecurityOpt}}'
private [label=disable]
podman inspect <co> --format '{{.HostConfig.UsernsMode}} {{.HostConfig.SecurityOpt}}'
(empty) []
Both workspaces are dev:1000 on the host:
| workspace owner inside | write as remoteUser |
|
|---|---|---|
| single container | vscode:1000 |
OK |
| compose | root:0 |
Permission denied |
Expected
The compose path should apply the same podman handling as the single-container path — emitting the flags into the generated docker-compose.devcontainer.*.yml override (userns_mode, security_opt) for the primary service.
Related but different
#1004 / #1018 (omit keep-id for root) and #1284 / #1285 (derive the mapping from the remote user's real UID/GID) all concern how getPodmanArgs should behave. This is that the compose path never calls it. Whatever #1285 settles for the mapping should presumably apply to both paths.
- Lenguaje dominante
- TypeScript
- Estrellas
- 3k
- Forks
- 461
- Merge medio
- 18 min
- PR fusionados (30 d)
- 5
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de devcontainers/cli
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
devcontainers/cli#1203 ·
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 68/100
devcontainers/cli#1178 · 1 comentario ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
devcontainers/cli#1308 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 78/100
devcontainers/cli#1307 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
devcontainers/cli#1305 ·
Todos los issues de devcontainers/cli
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
safetrustcr/dApp-SafeTrust#426 ·
-
area:workflow bug ready-for-agent
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
fil-donadoni/tolaria#4409 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Fission-AI/OpenSpec#1960 ·
-
Add dependabot Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
corsairdev/corsair#1764 ·