Docker kind of always had a USER
command to run a process as a specific user, but in general a lot of things had to run as ROOT.
I have seen a lot of images that use an ENTRYPOINT
with gosu
to de-elevate the process to run.
I'm still a bit confused about the need for gosu
. Shouldn't USER be enough?
I know quite a bit has changed in terms of security with Docker 1.10, but I'm still not clear about the recommended way to run a process in a docker container.
Can someone explain when I would use gosu
vs. USER
?
Thanks
EDIT:
The Docker best practice guide is not very clear: It says if the process can run without priviledges, use USER
, if you need sudo, you might want to use gosu
.
That is confusing because one can install all sorts of things as ROOT in the Dockerfile
, then create a user and give it proper privileges, then finally switch to that user and run the CMD
as that user.
So why would we need sudo or gosu
then?