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
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.
{
"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:
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
Summary
devcontainer upcan hang forever after printingContainer startedwhen using Podman and creating/recreating a container. It appears to be waiting for the Podmanstartevent even though the container is already running.Repro
The workspace a
.devcontainer.jsonvery similar to this (some stuff removed).--skip-post-createstill reproduces the hang, sopostCreateCommanddoes not appear to be the cause.{ "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:
Process inspection shows a live
podman events --format json --filter event=startchild and the attachedpodman runchild. The container is running andpodman events --since ... --filter event=startshows the matching start event with the expecteddevcontainer.local_folder/devcontainer.config_filelabels.Existing-container
devcontainer upcompletes.--skip-post-createstill hangs, so this is before post-create. Running with--log-level debugortraceoften makes it pass, which looks like a timing race in the event listener setup.Versions tested
@devcontainers/cli0.87.0 and 0.86.0