vscode-remote-release icon indicating copy to clipboard operation
vscode-remote-release copied to clipboard

Devcontainer fails with "remoteUser" with "mkdir: cannot create directory ‘/root’: Permission denied"

Open f-squirrel opened this issue 3 years ago • 16 comments

  • VSCode Version:

    Version: 1.73.1
    Commit: 6261075646f055b99068d3688932416f2346dd3b
    Date: 2022-11-09T03:54:53.913Z
    Electron: 19.0.17
    Chromium: 102.0.5005.167
    Node.js: 16.14.2
    V8: 10.2.154.15-electron.0
    OS: Linux x64 5.14.0-1054-oem
    Sandboxed: No
    
  • Local OS Version: Ubuntu 20.04

  • Remote OS Version: Ubuntu 18.04

  • Remote Extension/Connection Type: Containers/Server

  • Logs:

[2022-12-08T13:27:09.218Z] Stop (83 ms): Run in container: uname -m
[2022-12-08T13:27:09.218Z] Start: Run in container: (cat /etc/os-release || cat /usr/lib/os-release) 2>/dev/null
[2022-12-08T13:27:09.219Z] NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
[2022-12-08T13:27:09.220Z] 
[2022-12-08T13:27:09.220Z] Stop (2 ms): Run in container: (cat /etc/os-release || cat /usr/lib/os-release) 2>/dev/null
[2022-12-08T13:27:09.220Z] Start: Run in container: cat /etc/passwd
[2022-12-08T13:27:09.221Z] Stop (1 ms): Run in container: cat /etc/passwd
[2022-12-08T13:27:09.221Z] Start: Updating configuration state
[2022-12-08T13:27:09.225Z] Stop (4 ms): Updating configuration state
[2022-12-08T13:27:09.226Z] Start: Setup shutdown monitor
[2022-12-08T13:27:09.226Z] Forking shutdown monitor: /home/dima/.vscode/extensions/ms-vscode-remote.remote-containers-0.266.1/dist/shutdown/shutdownMonitorProcess /run/user/1000/vscode-remote-containers-6da2fc337d9acc87b102df1f9a3bef3253fbe77b.sock singleContainer Debug /home/dima/.config/Code/logs/20221208T152051/window1/exthost/ms-vscode-remote.remote-containers 1670506027518
[2022-12-08T13:27:09.229Z] Stop (3 ms): Setup shutdown monitor
[2022-12-08T13:27:09.230Z] Start: Run in container: test -d /root/.vscode-server
[2022-12-08T13:27:09.230Z] 
[2022-12-08T13:27:09.230Z] 
[2022-12-08T13:27:09.231Z] Exit code 1
[2022-12-08T13:27:09.231Z] Stop (1 ms): Run in container: test -d /root/.vscode-server
[2022-12-08T13:27:09.231Z] Start: Run in container: test -d /root/.vscode-remote
[2022-12-08T13:27:09.231Z] 
[2022-12-08T13:27:09.232Z] 
[2022-12-08T13:27:09.232Z] Exit code 1
[2022-12-08T13:27:09.232Z] Stop (1 ms): Run in container: test -d /root/.vscode-remote
[2022-12-08T13:27:09.232Z] Start: Run in container: test ! -f '/root/.vscode-server/data/Machine/.writeMachineSettingsMarker' && set -o noclobber && mkdir -p '/root/.vscode-server/data/Machine' && { > '/root/.vscode-server/data/Machine/.writeMachineSettingsMarker' ; } 2> /dev/null
[2022-12-08T13:27:09.233Z] 
[2022-12-08T13:27:09.233Z] mkdir: cannot create directory ‘/root’: Permission denied
[2022-12-08T13:27:09.234Z] Exit code 1
[2022-12-08T13:27:09.234Z] Stop (2 ms): Run in container: test ! -f '/root/.vscode-server/data/Machine/.writeMachineSettingsMarker' && set -o noclobber && mkdir -p '/root/.vscode-server/data/Machine' && { > '/root/.vscode-server/data/Machine/.writeMachineSettingsMarker' ; } 2> /dev/null
[2022-12-08T13:27:09.234Z] Start: Run in container: cat /root/.vscode-server/data/Machine/settings.json
[2022-12-08T13:27:09.235Z] 
[2022-12-08T13:27:09.235Z] cat: /root/.vscode-server/data/Machine/settings.json: Permission denied
[2022-12-08T13:27:09.235Z] Exit code 1
[2022-12-08T13:27:09.235Z] Stop (1 ms): Run in container: cat /root/.vscode-server/data/Machine/settings.json
[2022-12-08T13:27:09.235Z] Start: Run in container: test -d /root/.vscode-server/bin/6261075646f055b99068d3688932416f2346dd3b
[2022-12-08T13:27:09.235Z] 
[2022-12-08T13:27:09.236Z] 
[2022-12-08T13:27:09.236Z] Exit code 1
[2022-12-08T13:27:09.236Z] Stop (1 ms): Run in container: test -d /root/.vscode-server/bin/6261075646f055b99068d3688932416f2346dd3b
[2022-12-08T13:27:09.236Z] Start: Run in container: test -d /vscode/vscode-server/bin/linux-x64/6261075646f055b99068d3688932416f2346dd3b
[2022-12-08T13:27:09.236Z] 
[2022-12-08T13:27:09.236Z] 
[2022-12-08T13:27:09.237Z] Stop (1 ms): Run in container: test -d /vscode/vscode-server/bin/linux-x64/6261075646f055b99068d3688932416f2346dd3b
[2022-12-08T13:27:09.237Z] Start: Run in container: mkdir -p '/root/.vscode-server/bin' && ln -snf '/vscode/vscode-server/bin/linux-x64/6261075646f055b99068d3688932416f2346dd3b' '/root/.vscode-server/bin/6261075646f055b99068d3688932416f2346dd3b'
[2022-12-08T13:27:09.238Z] 
[2022-12-08T13:27:09.238Z] mkdir: cannot create directory ‘/root’: Permission denied
[2022-12-08T13:27:09.238Z] Exit code 1
[2022-12-08T13:27:09.238Z] Stop (1 ms): Run in container: mkdir -p '/root/.vscode-server/bin' && ln -snf '/vscode/vscode-server/bin/linux-x64/6261075646f055b99068d3688932416f2346dd3b' '/root/.vscode-server/bin/6261075646f055b99068d3688932416f2346dd3b'
[2022-12-08T13:27:09.240Z] Command in container failed: mkdir -p '/root/.vscode-server/bin' && ln -snf '/vscode/vscode-server/bin/linux-x64/6261075646f055b99068d3688932416f2346dd3b' '/root/.vscode-server/bin/6261075646f055b99068d3688932416f2346dd3b'
[2022-12-08T13:27:09.240Z] mkdir: cannot create directory ‘/root’: Permission denied
[2022-12-08T13:27:09.240Z] Exit code 

Steps to Reproduce:

  1. Prepare an image with a non-root user
  2. Add "remoteUser": "non-root-user,
  3. Reopen in container ==> Fails with the error above.

Does this issue occur when you try this locally?: No Does this issue occur when you try this locally and all extensions are disabled?: Yes

f-squirrel avatar Dec 08 '22 14:12 f-squirrel

Please check the non-root-user's home folder is set to a folder owned by that user. Also make sure the HOME env variable is not set (that would overwrite the home folder for the user).

chrmarti avatar Dec 09 '22 09:12 chrmarti

@chrmarti , thank you for the reply. The non-root-user is indeed the owner of its home directory. Once I log in as this user, the variable HOME points to the correct directory. From what I see in the logs, vscode does not even try to reach the user's directory; instead, it directly goes for the root.

f-squirrel avatar Dec 09 '22 18:12 f-squirrel

I do not know if it's related but I'm having a similar issue under docker-desktop (on top of WSL2).

My Dockerfile ends with:

RUN groupadd --gid 1000 vscode
RUN adduser --home-dir /vscode --create-home --gid 1000 --uid 1000 vscode

USER 1000:1000
ENV HOME=

I therefore hope that $HOME is NOT defined ...

But running env in the container shows $HOME exists anyway and points to the USER home. What can we do about it ?

I set "remoteUser": "vscode" in devcontainer.json.

then devcontainers fails :

[14741 ms] Command in container failed: mkdir -p '/vscode/.vscode-server/bin' && ln -snf '/vscode/vscode-server/bin/linux-x64/441438abd1ac652551dbe4d408dfcec8a499b8bf' '/vscode/.vscode-server/bin/441438abd1ac652551dbe4d408dfcec8a499b8bf'
[14741 ms] mkdir: cannot create directory '/vscode/.vscode-server': Permission denied

My investigation show that although the user running the container seems to be vscode, the home folder is owned by the root user...

The base container however is properly configured.

Looking at the logs I can see that devcontainers did some house keeping (log modified to remove sensitive data: sorry):

[9728 ms] Start: Run: docker build -f /tmp/devcontainercli-xxxxxxx/updateUID.Dockerfile-0.29.0 -t vsc-xxxxxxx-f38313021df90ff025ac1d488395e7f9-uid --build-arg BASE_IMAGE=vsc-xxxxxx-f38313021df90ff025ac1d488395e7f9 --build-arg REMOTE_USER=vscode --build-arg NEW_UID=1000 --build-arg NEW_GID=1000 --build-arg IMAGE_USER=1000:1000 /tmp/devcontainercli-xxxxxx/empty-folder

However this does NOT mess the user folder permissions ...

Then eventually devcontainer crashes the rocket in the wall:

[10942 ms] Start: Run: docker run --sig-proxy=false -a STDOUT -a STDERR --mount source=/home/xxx/Projects/xxx,target=/xxx,type=bind,consistency=cached --mount type=volume,src=vscode,dst=/vscode --mount type=bind,src=/mnt/wslg/runtime-dir/wayland-0,dst=/tmp/vscode-wayland-e6cd6acda416c30909a8d3df2612ecd17d23fe09.sock -l devcontainer.local_folder=\\wsl.localhost\Ubuntu\home\xxx\Projects\xxx -l devcontainer.config_file=/home/xxx/Projects/xxx/.devcontainer/devcontainer.json -u vscode --entrypoint /bin/sh vsc-xxx-f38313021df90ff025ac1d488395e7f9-uid -c echo Container started

... why ? : notice the --mount type=volume,src=vscode,dst=/vscode

Because files in the volume mount named vscode are owned by root...

... they therefore override the permissions carefully set by the previous devcontainer stages.

From my perspective this cannot work. ... or i do not understand how devcontainer creates the vscode volume that it shares with the container...

BTW: I use (vscode 1.75.1)

tchinchow avatar Feb 22 '23 12:02 tchinchow

P.S.

In my case adding

    "remoteEnv": { "HOME": "" },

to the devcontainer.json file made my day... ... I can't tell why though ?

tchinchow avatar Feb 22 '23 12:02 tchinchow

Podman sets HOME to /root which then misleads the extension. We could ignore HOME and always check /etc/passwd.

chrmarti avatar Feb 23 '23 08:02 chrmarti

In my case setting containerUser instead of remoteUser helps.

m3nowak avatar Mar 01 '23 11:03 m3nowak

same problem with the later Dev Container (version > v0.266.1) but works with (version == v0.266.1) Here is the log from Dev Containers window output. I did not set user.

I connect to container through remote ssh:

localhost -> remote machine(sgjur-**-**) -> (yyx-model-runtime) container in remote machine
[33 ms] Dev Containers 0.282.0 in VS Code 1.76.0 (92da9481c0904c6adfe372c12da3b7748d74bdcb).
[33 ms] Start: Resolving Remote
[35 ms] Setting up container: /yyx-model-runtime
[35 ms] Host: ssh://sgjur-**-**
[40 ms] Start: Run: ssh sgjur-**-** /bin/sh
[42 ms] Start: Run in host: id -un
[2330 ms] scotty
[2330 ms] 
[2331 ms] Start: Run in host: cat /etc/passwd
[2426 ms] Start: Run in host: echo ~
[2514 ms] /home/scotty
[2514 ms] 
[2515 ms] Start: Run in host: test -x '/home/scotty/.vscode-remote-containers/bin/92da9481c0904c6adfe372c12da3b7748d74bdcb/node'
[2600 ms] 
[2600 ms] 
[2601 ms] Start: Run in host: test -f '/home/scotty/.vscode-remote-containers/dist/vscode-remote-containers-server-0.282.0.js'
[2686 ms] 
[2686 ms] 
[2771 ms] userEnvProbe: loginInteractiveShell (default)
[2772 ms] userEnvProbe: not found in cache
[2772 ms] userEnvProbe shell: /bin/sh
[4779 ms] Start: Run in Host: /bin/sh 
[4882 ms] Start: Run in container: for pid in `cd /proc && ls -d [0-9]*`; do { echo $pid ; readlink /proc/$pid/cwd ; readlink /proc/$pid/ns/mnt ; cat /proc/$pid/stat | tr "
[12775 ms] userEnvProbe is taking longer than 10 seconds. Avoid waiting for user input in your shell's startup scripts. Continuing.
[12862 ms] Start: Run in Host: docker inspect --type container /yyx-model-runtime
[13381 ms] Start: Check Docker is running
[13382 ms] Start: Run in Host: docker version --format {{.Server.APIVersion}}
[13553 ms] Server API version: 1.41
[14074 ms] Command failed: mkdir -p /.vscode-remote-containers/dist/dev-containers-cli-0.282.0-5ad0f741-5732-4893-81cd-ee1ed1ab1c89/dist/spec-node
[14074 ms] mkdir: cannot create directory '/.vscode-remote-containers': Permission denied
[14074 ms] Exit code 1
[59844 ms] userEnvProbe

Alwaysproblem avatar Mar 06 '23 05:03 Alwaysproblem

Had a similar issue when attaching to a remote container:

mkdir: cannot create directory '/.vscode-remote-containers': Permission denied

As suggested by @Alwaysproblem, downgrading Dev Containers to 0.266.1 fixed it.

leopoldmaillard avatar Mar 21 '23 17:03 leopoldmaillard

@Alwaysproblem @leopoldmaillard Does your container have HOME set to /?

chrmarti avatar Mar 22 '23 09:03 chrmarti

I set it HOME to “/root”

Alwaysproblem avatar Mar 22 '23 12:03 Alwaysproblem

Hello @chrmarti, similar to @Alwaysproblem, my $HOME is set to /root

leopoldmaillard avatar Mar 29 '23 14:03 leopoldmaillard

@Alwaysproblem @leopoldmaillard Continuing with the issue you are reporting in #8298.

chrmarti avatar Mar 30 '23 09:03 chrmarti

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.

Happy Coding!

github-actions[bot] avatar Apr 06 '23 12:04 github-actions[bot]

Still getting this on v0.327.0. I tried with the following options also (python-3 container)

	"runArgs": [
		"--userns=keep-id"
	],
	"containerEnv": {
		"HOME": "/home/vscode"
	},
	"remoteEnv": {
		"HOME": "/home/vscode"
	},
	"containerUser": "vscode",
	"remoteUser": "vscode"

Fedora Silverblue 39 podman version 4.8.1

Container logs
[2023-12-29T03:31:43.012Z] Dev Containers 0.327.0 in VS Code 1.85.1 (0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2).
[2023-12-29T03:31:43.012Z] Start: Resolving Remote
[2023-12-29T03:31:43.054Z] Setting up container for folder or workspace: /var/home/brady/project
[2023-12-29T03:31:43.056Z] Start: Check Docker is running
[2023-12-29T03:31:43.056Z] Start: Run: podman version --format {{.Server.APIVersion}}
[2023-12-29T03:31:43.079Z] Stop (23 ms): Run: podman version --format {{.Server.APIVersion}}
[2023-12-29T03:31:43.079Z] Server API version: 4.8.1
[2023-12-29T03:31:43.079Z] Stop (23 ms): Check Docker is running
[2023-12-29T03:31:43.080Z] Start: Run: podman volume ls -q
[2023-12-29T03:31:43.100Z] Stop (20 ms): Run: podman volume ls -q
[2023-12-29T03:31:43.101Z] Start: Run: podman ps -q -a --filter label=vsch.local.folder=/var/home/brady/project --filter label=vsch.quality=stable
[2023-12-29T03:31:43.125Z] Stop (24 ms): Run: podman ps -q -a --filter label=vsch.local.folder=/var/home/brady/project --filter label=vsch.quality=stable
[2023-12-29T03:31:43.125Z] Start: Run: podman ps -q -a --filter label=devcontainer.local_folder=/var/home/brady/project --filter label=devcontainer.config_file=/var/home/brady/project/.devcontainer/devcontainer.json
[2023-12-29T03:31:43.150Z] Stop (25 ms): Run: podman ps -q -a --filter label=devcontainer.local_folder=/var/home/brady/project --filter label=devcontainer.config_file=/var/home/brady/project/.devcontainer/devcontainer.json
[2023-12-29T03:31:43.151Z] Start: Run: podman inspect --type container 4dbec323c5a6
[2023-12-29T03:31:43.177Z] Stop (26 ms): Run: podman inspect --type container 4dbec323c5a6
[2023-12-29T03:31:43.177Z] Start: Run: podman ps -q -a --filter label=devcontainer.local_folder=/var/home/brady/project
[2023-12-29T03:31:43.201Z] Stop (24 ms): Run: podman ps -q -a --filter label=devcontainer.local_folder=/var/home/brady/project
[2023-12-29T03:31:43.201Z] Start: Run: podman inspect --type container 4dbec323c5a6
[2023-12-29T03:31:43.226Z] Stop (25 ms): Run: podman inspect --type container 4dbec323c5a6
[2023-12-29T03:31:43.227Z] Start: Run: /usr/share/code/code --ms-enable-electron-run-as-node /var/home/brady/.vscode/extensions/ms-vscode-remote.remote-containers-0.327.0/dist/spec-node/devContainersSpecCLI.js read-configuration --docker-path podman --docker-compose-path podman-compose --workspace-folder /var/home/brady/project --id-label devcontainer.local_folder=/var/home/brady/project --id-label devcontainer.config_file=/var/home/brady/project/.devcontainer/devcontainer.json --log-level debug --log-format json --config /var/home/brady/project/.devcontainer/devcontainer.json --mount-workspace-git-root
[2023-12-29T03:31:43.395Z] @devcontainers/cli 0.54.1. Node.js v18.15.0. linux 6.6.8-200.fc39.x86_64 x64.
[2023-12-29T03:31:43.395Z] Start: Run: git rev-parse --show-cdup
[2023-12-29T03:31:43.401Z] Stop (6 ms): Run: git rev-parse --show-cdup
[2023-12-29T03:31:43.402Z] Start: Run: podman ps -q -a --filter label=devcontainer.local_folder=/var/home/brady/project --filter label=devcontainer.config_file=/var/home/brady/project/.devcontainer/devcontainer.json
[2023-12-29T03:31:43.424Z] Stop (22 ms): Run: podman ps -q -a --filter label=devcontainer.local_folder=/var/home/brady/project --filter label=devcontainer.config_file=/var/home/brady/project/.devcontainer/devcontainer.json
[2023-12-29T03:31:43.425Z] Start: Run: podman inspect --type container 4dbec323c5a6
[2023-12-29T03:31:43.449Z] Stop (24 ms): Run: podman inspect --type container 4dbec323c5a6
[2023-12-29T03:31:43.453Z] Stop (226 ms): Run: /usr/share/code/code --ms-enable-electron-run-as-node /var/home/brady/.vscode/extensions/ms-vscode-remote.remote-containers-0.327.0/dist/spec-node/devContainersSpecCLI.js read-configuration --docker-path podman --docker-compose-path podman-compose --workspace-folder /var/home/brady/project --id-label devcontainer.local_folder=/var/home/brady/project --id-label devcontainer.config_file=/var/home/brady/project/.devcontainer/devcontainer.json --log-level debug --log-format json --config /var/home/brady/project/.devcontainer/devcontainer.json --mount-workspace-git-root
[2023-12-29T03:31:43.453Z] Start: Run: /usr/share/code/code --ms-enable-electron-run-as-node /var/home/brady/.vscode/extensions/ms-vscode-remote.remote-containers-0.327.0/dist/spec-node/devContainersSpecCLI.js up --user-data-folder /var/home/brady/.config/Code/User/globalStorage/ms-vscode-remote.remote-containers/data --docker-path podman --docker-compose-path podman-compose --container-session-data-folder /tmp/devcontainers-3bd4a17f-fec8-4790-b253-781c1cc197c51703820702581 --workspace-folder /var/home/brady/project --workspace-mount-consistency cached --id-label devcontainer.local_folder=/var/home/brady/project --id-label devcontainer.config_file=/var/home/brady/project/.devcontainer/devcontainer.json --log-level debug --log-format json --config /var/home/brady/project/.devcontainer/devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root
[2023-12-29T03:31:43.619Z] @devcontainers/cli 0.54.1. Node.js v18.15.0. linux 6.6.8-200.fc39.x86_64 x64.
[2023-12-29T03:31:43.619Z] Start: Run: podman buildx version
[2023-12-29T03:31:43.657Z] Stop (38 ms): Run: podman buildx version
[2023-12-29T03:31:43.657Z] buildah 1.33.2
[2023-12-29T03:31:43.657Z] 
[2023-12-29T03:31:43.658Z] Start: Resolving Remote
[2023-12-29T03:31:43.659Z] Start: Run: git rev-parse --show-cdup
[2023-12-29T03:31:43.662Z] Stop (3 ms): Run: git rev-parse --show-cdup
[2023-12-29T03:31:43.769Z] Start: Run: podman ps -q -a --filter label=devcontainer.local_folder=/var/home/brady/project --filter label=devcontainer.config_file=/var/home/brady/project/.devcontainer/devcontainer.json
[2023-12-29T03:31:43.790Z] Stop (21 ms): Run: podman ps -q -a --filter label=devcontainer.local_folder=/var/home/brady/project --filter label=devcontainer.config_file=/var/home/brady/project/.devcontainer/devcontainer.json
[2023-12-29T03:31:43.791Z] Start: Run: podman inspect --type container 4dbec323c5a6
[2023-12-29T03:31:43.815Z] Stop (24 ms): Run: podman inspect --type container 4dbec323c5a6
[2023-12-29T03:31:43.815Z] Start: Starting container
[2023-12-29T03:31:43.815Z] Start: Run: podman start 4dbec323c5a695b09420cc113aeac91ac88435925c5525df58e24a5b68212fe1
[2023-12-29T03:31:44.048Z] Stop (233 ms): Run: podman start 4dbec323c5a695b09420cc113aeac91ac88435925c5525df58e24a5b68212fe1
[2023-12-29T03:31:44.049Z] Stop (234 ms): Starting container
[2023-12-29T03:31:44.049Z] Start: Run: podman ps -q -a --filter label=devcontainer.local_folder=/var/home/brady/project --filter label=devcontainer.config_file=/var/home/brady/project/.devcontainer/devcontainer.json
[2023-12-29T03:31:44.071Z] Stop (22 ms): Run: podman ps -q -a --filter label=devcontainer.local_folder=/var/home/brady/project --filter label=devcontainer.config_file=/var/home/brady/project/.devcontainer/devcontainer.json
[2023-12-29T03:31:44.071Z] Start: Run: podman inspect --type container 4dbec323c5a6
[2023-12-29T03:31:44.095Z] Stop (24 ms): Run: podman inspect --type container 4dbec323c5a6
[2023-12-29T03:31:44.096Z] Start: Inspecting container
[2023-12-29T03:31:44.096Z] Start: Run: podman inspect --type container 4dbec323c5a695b09420cc113aeac91ac88435925c5525df58e24a5b68212fe1
[2023-12-29T03:31:44.120Z] Stop (24 ms): Run: podman inspect --type container 4dbec323c5a695b09420cc113aeac91ac88435925c5525df58e24a5b68212fe1
[2023-12-29T03:31:44.120Z] Stop (24 ms): Inspecting container
[2023-12-29T03:31:44.121Z] Start: Run in container: /bin/sh
[2023-12-29T03:31:44.123Z] Start: Run in container: uname -m
[2023-12-29T03:31:44.255Z] x86_64
[2023-12-29T03:31:44.255Z] 
[2023-12-29T03:31:44.255Z] Stop (132 ms): Run in container: uname -m
[2023-12-29T03:31:44.255Z] Start: Run in container: (cat /etc/os-release || cat /usr/lib/os-release) 2>/dev/null
[2023-12-29T03:31:44.256Z] PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
[2023-12-29T03:31:44.256Z] 
[2023-12-29T03:31:44.256Z] Stop (1 ms): Run in container: (cat /etc/os-release || cat /usr/lib/os-release) 2>/dev/null
[2023-12-29T03:31:44.256Z] Start: Run in container:  (command -v getent >/dev/null 2>&1 && getent passwd 'vscode' || grep -E '^vscode|^[^:]*:[^:]*:vscode:' /etc/passwd || true)
[2023-12-29T03:31:44.257Z] Stop (1 ms): Run in container:  (command -v getent >/dev/null 2>&1 && getent passwd 'vscode' || grep -E '^vscode|^[^:]*:[^:]*:vscode:' /etc/passwd || true)
[2023-12-29T03:31:44.258Z] Start: Run in container: test -f '/var/devcontainer/.patchEtcEnvironmentMarker'
[2023-12-29T03:31:44.258Z] 
[2023-12-29T03:31:44.258Z] 
[2023-12-29T03:31:44.258Z] Stop (0 ms): Run in container: test -f '/var/devcontainer/.patchEtcEnvironmentMarker'
[2023-12-29T03:31:44.258Z] Start: Run in container: test -f '/var/devcontainer/.patchEtcProfileMarker'
[2023-12-29T03:31:44.258Z] 
[2023-12-29T03:31:44.258Z] 
[2023-12-29T03:31:44.258Z] Stop (0 ms): Run in container: test -f '/var/devcontainer/.patchEtcProfileMarker'
[2023-12-29T03:31:44.258Z] Stop (600 ms): Resolving Remote
[2023-12-29T03:31:44.262Z] Stop (809 ms): Run: /usr/share/code/code --ms-enable-electron-run-as-node /var/home/brady/.vscode/extensions/ms-vscode-remote.remote-containers-0.327.0/dist/spec-node/devContainersSpecCLI.js up --user-data-folder /var/home/brady/.config/Code/User/globalStorage/ms-vscode-remote.remote-containers/data --docker-path podman --docker-compose-path podman-compose --container-session-data-folder /tmp/devcontainers-3bd4a17f-fec8-4790-b253-781c1cc197c51703820702581 --workspace-folder /var/home/brady/project --workspace-mount-consistency cached --id-label devcontainer.local_folder=/var/home/brady/project --id-label devcontainer.config_file=/var/home/brady/project/.devcontainer/devcontainer.json --log-level debug --log-format json --config /var/home/brady/project/.devcontainer/devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root
[2023-12-29T03:31:44.262Z] Start: Run: podman inspect --type container 4dbec323c5a695b09420cc113aeac91ac88435925c5525df58e24a5b68212fe1
[2023-12-29T03:31:44.405Z] Stop (143 ms): Run: podman inspect --type container 4dbec323c5a695b09420cc113aeac91ac88435925c5525df58e24a5b68212fe1
[2023-12-29T03:31:44.405Z] Start: Run: podman exec -i -u root 4dbec323c5a695b09420cc113aeac91ac88435925c5525df58e24a5b68212fe1 /bin/sh -c echo "New container started. Keep-alive process started." ; export VSCODE_REMOTE_CONTAINERS_SESSION=3bd4a17f-fec8-4790-b253-781c1cc197c51703820702581 ; /bin/sh
[2023-12-29T03:31:44.409Z] Start: Run: /usr/share/code/code --ms-enable-electron-run-as-node /var/home/brady/.vscode/extensions/ms-vscode-remote.remote-containers-0.327.0/dist/spec-node/devContainersSpecCLI.js read-configuration --docker-path podman --docker-compose-path podman-compose --workspace-folder /var/home/brady/project --id-label devcontainer.local_folder=/var/home/brady/project --id-label devcontainer.config_file=/var/home/brady/project/.devcontainer/devcontainer.json --container-id 4dbec323c5a695b09420cc113aeac91ac88435925c5525df58e24a5b68212fe1 --log-level debug --log-format json --config /var/home/brady/project/.devcontainer/devcontainer.json --include-merged-configuration --mount-workspace-git-root
[2023-12-29T03:31:44.582Z] @devcontainers/cli 0.54.1. Node.js v18.15.0. linux 6.6.8-200.fc39.x86_64 x64.
[2023-12-29T03:31:44.582Z] Start: Run: git rev-parse --show-cdup
[2023-12-29T03:31:44.588Z] Stop (6 ms): Run: git rev-parse --show-cdup
[2023-12-29T03:31:44.588Z] Start: Run: podman inspect --type container 4dbec323c5a695b09420cc113aeac91ac88435925c5525df58e24a5b68212fe1
[2023-12-29T03:31:44.616Z] New container started. Keep-alive process started.
[2023-12-29T03:31:44.669Z] Stop (81 ms): Run: podman inspect --type container 4dbec323c5a695b09420cc113aeac91ac88435925c5525df58e24a5b68212fe1
[2023-12-29T03:31:44.674Z] Stop (265 ms): Run: /usr/share/code/code --ms-enable-electron-run-as-node /var/home/brady/.vscode/extensions/ms-vscode-remote.remote-containers-0.327.0/dist/spec-node/devContainersSpecCLI.js read-configuration --docker-path podman --docker-compose-path podman-compose --workspace-folder /var/home/brady/project --id-label devcontainer.local_folder=/var/home/brady/project --id-label devcontainer.config_file=/var/home/brady/project/.devcontainer/devcontainer.json --container-id 4dbec323c5a695b09420cc113aeac91ac88435925c5525df58e24a5b68212fe1 --log-level debug --log-format json --config /var/home/brady/project/.devcontainer/devcontainer.json --include-merged-configuration --mount-workspace-git-root
[2023-12-29T03:31:44.674Z] Start: Inspecting container
[2023-12-29T03:31:44.674Z] Start: Run: podman inspect --type container 4dbec323c5a695b09420cc113aeac91ac88435925c5525df58e24a5b68212fe1
[2023-12-29T03:31:44.699Z] Stop (25 ms): Run: podman inspect --type container 4dbec323c5a695b09420cc113aeac91ac88435925c5525df58e24a5b68212fe1
[2023-12-29T03:31:44.699Z] Stop (25 ms): Inspecting container
[2023-12-29T03:31:44.700Z] Start: Run in container: /bin/sh
[2023-12-29T03:31:44.704Z] Start: Run in container: uname -m
[2023-12-29T03:31:44.827Z] x86_64
[2023-12-29T03:31:44.827Z] 
[2023-12-29T03:31:44.827Z] Stop (123 ms): Run in container: uname -m
[2023-12-29T03:31:44.827Z] Start: Run in container: (cat /etc/os-release || cat /usr/lib/os-release) 2>/dev/null
[2023-12-29T03:31:44.828Z] PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
[2023-12-29T03:31:44.828Z] 
[2023-12-29T03:31:44.828Z] Stop (1 ms): Run in container: (cat /etc/os-release || cat /usr/lib/os-release) 2>/dev/null
[2023-12-29T03:31:44.828Z] Start: Run in container:  (command -v getent >/dev/null 2>&1 && getent passwd 'vscode' || grep -E '^vscode|^[^:]*:[^:]*:vscode:' /etc/passwd || true)
[2023-12-29T03:31:44.829Z] Stop (1 ms): Run in container:  (command -v getent >/dev/null 2>&1 && getent passwd 'vscode' || grep -E '^vscode|^[^:]*:[^:]*:vscode:' /etc/passwd || true)
[2023-12-29T03:31:44.830Z] Start: Setup shutdown monitor
[2023-12-29T03:31:44.830Z] Forking shutdown monitor: /var/home/brady/.vscode/extensions/ms-vscode-remote.remote-containers-0.327.0/dist/shutdown/shutdownMonitorProcess /run/user/1000/vscode-remote-containers-0ad4bd17-5471-4837-898a-8c36f5e22779.sock singleContainer Debug /var/home/brady/.config/Code/logs/20231228T214316/window2/exthost/ms-vscode-remote.remote-containers 1703820702992
[2023-12-29T03:31:44.834Z] Stop (4 ms): Setup shutdown monitor
[2023-12-29T03:31:44.835Z] Start: Run in container: test -d /root/.vscode-server
[2023-12-29T03:31:44.836Z] 
[2023-12-29T03:31:44.836Z] 
[2023-12-29T03:31:44.836Z] Exit code 1
[2023-12-29T03:31:44.836Z] Stop (1 ms): Run in container: test -d /root/.vscode-server
[2023-12-29T03:31:44.836Z] Start: Run in container: test -d /root/.vscode-remote
[2023-12-29T03:31:44.836Z] 
[2023-12-29T03:31:44.836Z] 
[2023-12-29T03:31:44.837Z] Exit code 1
[2023-12-29T03:31:44.837Z] Stop (1 ms): Run in container: test -d /root/.vscode-remote
[2023-12-29T03:31:44.837Z] Start: Run in container: test ! -f '/root/.vscode-server/data/Machine/.writeMachineSettingsMarker' && set -o noclobber && mkdir -p '/root/.vscode-server/data/Machine' && { > '/root/.vscode-server/data/Machine/.writeMachineSettingsMarker' ; } 2> /dev/null
[2023-12-29T03:31:44.838Z] 
[2023-12-29T03:31:44.838Z] mkdir: cannot create directory ‘/root’: Permission denied
[2023-12-29T03:31:44.838Z] Exit code 1
[2023-12-29T03:31:44.838Z] Stop (1 ms): Run in container: test ! -f '/root/.vscode-server/data/Machine/.writeMachineSettingsMarker' && set -o noclobber && mkdir -p '/root/.vscode-server/data/Machine' && { > '/root/.vscode-server/data/Machine/.writeMachineSettingsMarker' ; } 2> /dev/null
[2023-12-29T03:31:44.839Z] Start: Run in container: cat /root/.vscode-server/data/Machine/settings.json
[2023-12-29T03:31:44.840Z] 
[2023-12-29T03:31:44.840Z] cat: /root/.vscode-server/data/Machine/settings.json: Permission denied
[2023-12-29T03:31:44.840Z] Exit code 1
[2023-12-29T03:31:44.840Z] Stop (1 ms): Run in container: cat /root/.vscode-server/data/Machine/settings.json
[2023-12-29T03:31:44.840Z] Start: Run in container: test -d /root/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2
[2023-12-29T03:31:44.840Z] 
[2023-12-29T03:31:44.841Z] 
[2023-12-29T03:31:44.841Z] Exit code 1
[2023-12-29T03:31:44.841Z] Stop (1 ms): Run in container: test -d /root/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2
[2023-12-29T03:31:44.841Z] Start: Run in container: test -d /vscode/vscode-server/bin/linux-x64/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2
[2023-12-29T03:31:44.841Z] 
[2023-12-29T03:31:44.841Z] 
[2023-12-29T03:31:44.841Z] Stop (0 ms): Run in container: test -d /vscode/vscode-server/bin/linux-x64/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2
[2023-12-29T03:31:44.841Z] Start: Run in container: mkdir -p '/root/.vscode-server/bin' && ln -snf '/vscode/vscode-server/bin/linux-x64/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2' '/root/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2'
[2023-12-29T03:31:44.842Z] 
[2023-12-29T03:31:44.842Z] mkdir: cannot create directory ‘/root’: Permission denied
[2023-12-29T03:31:44.843Z] Exit code 1
[2023-12-29T03:31:44.843Z] Stop (2 ms): Run in container: mkdir -p '/root/.vscode-server/bin' && ln -snf '/vscode/vscode-server/bin/linux-x64/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2' '/root/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2'
[2023-12-29T03:31:44.845Z] Command in container failed: mkdir -p '/root/.vscode-server/bin' && ln -snf '/vscode/vscode-server/bin/linux-x64/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2' '/root/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2'
[2023-12-29T03:31:44.845Z] mkdir: cannot create directory ‘/root’: Permission denied
[2023-12-29T03:31:44.845Z] Exit code 1

bradydean avatar Dec 29 '23 03:12 bradydean

Looks like main issue related with using user: "1000:1000" in docker-compose.yaml or in parameters for docker run. I just removed this one from docker compose and created user with ID 1000 inside Dockerfile and defined it by USER nonroot - and it started to works

For me it looks like inside Docker file no defined any user so Devcontainer started use /root/ directory but can not due parameter user: "1000:1000"

serhii-nakon avatar Feb 04 '24 20:02 serhii-nakon

Note that this also affects new-container experience (via Dev Containers: New Dev Container...), so bootstrapping containers on podman desktop can be... difficult.

Clockwork-Muse avatar Aug 17 '24 19:08 Clockwork-Muse

For anyone this may help, this is the extent of what I needed to add to the default "Node & TypeScript" devcontainer.json to get it running in rootless Podman:

"runArgs": [
    "--userns=keep-id" // For Podman
],
"containerUser": "node", // For Podman

I've seen many recommendations for setting the HOME env var via containerEnv, but this doesn't seem to be necessary for me when setting containerUser.

polendri avatar Oct 28 '24 21:10 polendri

For anyone this may help, this is the extent of what I needed to add to the default "Node & TypeScript" devcontainer.json to get it running in rootless Podman:

"runArgs": [
    "--userns=keep-id" // For Podman
],
"containerUser": "node", // For Podman

You can also make the userns default in podman by setting environment variable PODMAN_USERNS=keep-id or in its config file and then the devcontainer.json should work with both podman and docker, because the containerUser should be the same in both and is just not getting properly detected with podman.

jan-hudec avatar Oct 29 '24 12:10 jan-hudec

FWIW: this worked for me (with mcr.microsoft.com/devcontainers/base:bookworm):

  "remoteEnv": {
    "PODMAN_USERNS": "keep-id"
  },
  "containerUser": "vscode"

pjoe avatar Nov 11 '24 14:11 pjoe

I'm also seeing this (and I use Podman). I'm inexperienced with devcontainers, so advice such as @pjoe gave doesn't help me much. I have a bare C# project (just created with dotnet new), to which I've added a .devcontainers.json file containing this:

{
	"image": "mcr.microsoft.com/devcontainers/dotnet:1-9.0-bookworm",
	"remoteEnv": {
		"PODMAN_USERNS": "keep-id"
	}
}

When I open VSCode in this directory, the extension notices that there's a .devcontainers.json file, and offers to reload the window in a container. When I allow it to do that, I get the same failure noted above (mkdir: cannot create directory '/root': Permission denied).

It really would be nice if the developers of various tools and extensions tested with Podman, now that Docker is unavailable to many of us.

godefroi avatar Feb 19 '25 20:02 godefroi

I do not use Podman. I simply want to open a host folder for which root has no permission and which is mounted in the container. I tried all the solutions presented here unsetting/setting home in remoteEvn and containerEnv, changing containerUser and remoteUser. Either the container is executed as root which doesn't allow me to enter the mounted folder, or I get the mkdir: cannot create directory ‘/root’: Permission denied error described in the first post. Note, outside of vscode, executing docker exec --user $(id -u):$(id -g) -it mycontainer /bin/bash gives me no problems.

raphaelsulzer avatar Feb 28 '25 15:02 raphaelsulzer