我知道这是很多人提出的问题。但是我不知道我在做什么错。我有这个Dockerfile
FROM nginx
ENV USER=${USER}
COPY proof.sh .
RUN chmod 777 proof.sh
CMD echo ${USER} >> /usr/share/nginx/html/index.html
CMD ["nginx", "-g", "daemon off;"]
EXPOSE 80
在Linux中执行env命令时,得到USER = fran,然后运行以下命令:
sudo docker run --entrypoint "/bin/sh" 5496674f99e5 ./prueba.sh
以及其他docker run --env USER -d -p 89:80 prueba
我也运行。如果我了解得很好,那么从主机执行此命令的最后一个命令应该将其传递给docker,但是我什么也没得到。为什么?。你可以帮帮我吗?。预先感谢
答案 0 :(得分:1)
应该像
FROM nginx
ARG USER=default
ENV USER=${USER}
RUN echo ${USER}
CMD ["nginx", "-g", "daemon off;"]
EXPOSE 80
现在,如果您使用build-args
之类的东西
docker build --no-cache --build-arg USER=fran_new -t my_image .
您将在类似fran_new
或者如果您想在运行时从主机操作系统中获取用户,然后在运行时将其作为环境变量传递给
docker run --name my_container -e USER=$USER my_image
因此容器用户将与主机中的用户相同。