I'm trying to write a little docker file that sets a User and just echos the current user as a little example to prove to myself it is working. I've tried a number of variants and couldn't find much help in the documentation.
FROM ubuntu
USER daemon
# ENTRYPOINT ["echo", "$USER"]
# just gives "$USER"
# ENTRYPOINT ["echo", "-e", "${USER}"]
# just gives "$USER"
# ENTRYPOINT echo $USER
# gives empty string
# ENTRYPOINT ["/bin/echo", "$USER"]
# just gives "$USER"
I'm running docker build .
on the dockerfile and then running docker run <image-id>
and getting the results
Expected result is daemon
, or without the USER daemon
line, I expect root
. Probably a really simple answer.
Select Start > All Programs > Accessories > Command Prompt. In the command window that opens, enter echo %VARIABLE%. Replace VARIABLE with the name of the environment variable.
Fetch Using docker exec Command Here, we are executing the /usr/bin/env utility inside the Docker container. Using this utility, you can view all the environment variables set inside Docker containers.
This is the expected behavior, as weird as it seems!
When ENTRYPOINT
is a list (as in ENTRYPOINT ["echo", "$USER"]
), it is used as-is, without further parsing or interpretation. So $USER
remains $USER
, because there is no shell involved in the process to replace it with the value of the USER
environment variable.
Now, when ENTRYPOINT
is a string (as in ENTRYPOINT echo $USER
), what is actually executed is sh -c "echo $USER"
, and $USER
is replaced with the value of the environment variable (as you would expect).
However, the environment variable USER
is not set by default. It is set by the login process; and when you just run sh -c ...
the login process is not involved.
Compare the environment when running docker run -t -i ubuntu bash
and docker run -t -i ubuntu login -f root
. In the former case, you will get a very basic environment; in the latter case, you will get the complete environment that you are used to (including USER
variable).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With