If you have a docker container and would like to add users to run some processes, this short tutorial is for you. The trick here is to rely on USERADD rather than on the interactive wrapper ADDUSER that many would normally invoke.
Run the command below in your terminal, in order to create a home folder for the new docker user. It will ensure also that bash is the shell by default.
RUN useradd -ms /bin/bash the_new_user
Next you can add the following to your Docker file :
Every interactive session and command afterwards will be executed as user the_new_user:
docker run -t -i image
In case you would like to grant permissions, you can give the_new_user the required permissions to run your desired programs before executing the user command.
For security reasons, the use of non-privileged users inside the Docker containers is recommended. This however has some disadvantages in that people deriving Docker images from your own, would need to switch to root before they can run commands with elevated superuser privileges.