devcontainers / devcontainers/cli
Podman: up can hang after "Container started" on create/recreate
- Dominant language
- TypeScript
- Stars
- 3k
- Forks
- 457
- Avg merge
- 13h 17m
- Merged PRs (30d)
- 6
Description
### Summary
`devcontainer up` can hang forever after printing `Container started` when using Podman and creating/recreating a container. It appears to be waiting for the Podman `start` event even though the container is already running.
### Repro
```sh
DCMAN_SSH_PORT=56701 devcontainer up \
--remove-existing-container \
--skip-post-create \
--no-lockfile \
--docker-path podman \
--update-remote-user-uid-default never \
--workspace-folder /path/to/workspace
```
The workspace a `.devcontainer.json` very similar to this (some stuff removed). `--skip-post-create` still reproduces the hang, so `postCreateCommand` does not appear to be the cause.
```json
{
"name": "Fedora Sandbox",
"image": "ghcr.io/kraxen72/fedora-toolchain-base:latest",
"postCreateCommand": "pnpm add -g typescript npm-check-updates degit repomix @devcontainers/cli",
"workspaceMount": "source=${localWorkspaceFolder},target=/home/vscode/workspaces/${localWorkspaceFolderBasename},type=bind,Z",
"workspaceFolder": "/home/vscode/workspaces/${localWorkspaceFolderBasename}",
"features": {
"ghcr.io/kraxen72/devcontainer-features/common-utils-bash-prompt:1": {},
"ghcr.io/kraxen72/devcontainer-features/pnpm:1": {},
"ghcr.io/kraxen72/devcontainer-features/codex-cli:1": { "version": "latest", "autoUpdate": true },
"ghcr.io/kraxen72/devcontainer-features/copilot-cli:1": { "version": "latest", "autoUpdate": true },
"ghcr.io/kraxen72/devcontainer-features/ssh-zed:2": {}
},
"runArgs": [
"--name=dcman_${localWorkspaceFolderBasename}",
"--publish=127.0.0.1:${localEnv:DCMAN_SSH_PORT}:2222",
"--cap-drop=ALL",
"--cap-add=SETUID",
"--cap-add=SETGID",
"--security-opt=no-new-privileges",
"--tmpfs=/tmp:exec,mode=1777",
"--pids-limit=2048",
"--ulimit=nproc=2048:2048",
"--ulimit=nofile=65536:65536"
],
"remoteUser": "vscode",
"updateRemoteUserUID": true
}
```
### Expected
After `Container started`, the CLI should inspect/setup the running container and continue to user commands or finish.
### Actual
The CLI hangs after:
```text
Start: Run: podman run ...
Container started
```
Process inspection shows a live `podman events --format json --filter event=start` child and the attached `podman run` child. The container is running and `podman events --since ... --filter event=start` shows the matching start event with the expected `devcontainer.local_folder` / `devcontainer.config_file` labels.
Existing-container `devcontainer up` completes. `--skip-post-create` still hangs, so this is before post-create. Running with `--log-level debug` or `trace` often makes it pass, which looks like a timing race in the event listener setup.
### Versions tested
- `@devcontainers/cli` 0.87.0 and 0.86.0
- Podman 5.8.2
- Node 24.15.0 and 22.22.3
- Fedora 43 / Linux 7.0.4
Contributor guide
Assessment
This issue has not been assessed yet.