Reputation: 198238
We can use WORKDIR
to set a directory as work directory in Dockerfile
, but what's the default value if we don't set?
Upvotes: 143
Views: 140036
Reputation: 470
The default working directory for running binaries within a container is the root directory (/
), but the developer can set a different directory with the Dockerfile WORKDIR command. The operator can override this with:
-w="": Working directory inside the container
Here: https://docs.docker.com/engine/reference/run/#workdir
Upvotes: 26
Reputation: 7768
The default is indeed /
as stated elsewhere. It is worth mentioning, though, that you will almost never be running from an empty docker image (FROM scratch
), so the WORKDIR
is likely set by the base image you're using.
For instance, https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template has WORKDIR $CATALINA_HOME
, and https://github.com/dockerfile/ubuntu/blob/master/Dockerfile has WORKDIR /root
. (https://hub.docker.com/r/base/archlinux/~/dockerfile/ does not use WORKDIR
however.)
It is best, therefore, to set your own WORKDIR
explicitly.
Upvotes: 68
Reputation: 632
As there is are no users but a root in a just born docker or a container strictly speaking. So, for every change there will be a commit for that container as this guy said. Hence the pwd of that or as you asked the WORKDIR is /
root by default and every time you exec a /bin/bash
like this:
$docker exec -i -t 53f784fwer54 /bin/bash
on a running container it will put you here /
in the root dir.
Upvotes: 6