microsoft / vscode-dev-containers

NOTE: Most of the contents of this repository have been migrated to the new devcontainers GitHub org (https://github.com/devcontainers). See https://github.com/devcontainers/template-starter and https://github.com/devcontainers/feature-starter for information on creating your own!
https://aka.ms/vscode-remote
MIT License
4.72k stars 1.4k forks source link

UID in client is only adapted if switched to non-root via name but not if switched via UID in dockerfile. #1731

Open user1584 opened 1 year ago

user1584 commented 1 year ago

Steps to Reproduce:

  1. In the client, create a non-root user and switch to non-root user via UID instead of the user name
    
    FROM ubuntu AS test

ARG NON_ROOT_USER=non_root_user ARG NON_ROOT_UID=1000 ARG NON_ROOT_GID=100

USER root

Create non-root user

RUN useradd \ --no-log-init \ --no-user-group \ --shell /bin/bash \ --create-home \ --uid ${NON_ROOT_UID} \ --gid ${NON_ROOT_GID} \ ${NON_ROOT_USER}

This works:

USER ${NON_ROOT_USER}

This does not work:

USER ${NON_ROOT_UID}

2. Start devcontainer with 
```json
{
  "build": {
    "dockerfile": "Dockerfile",
    "target": "test"
  },
  "runArgs": [
    "--rm"
  ]
}
  1. Check the UID of the User within the devcontainer via id. If switching to the non-root user via USER ${NON_ROOT_USER}, you should get the UID of the user from the host. If switching via USER ${NON_ROOT_UID}, the UID will remain at 1000.