在Docker中设置环境variables

我在创build一个没有设置环境variables的容器的Docker时遇到了问题,我知道我在映像定义中设置了这个variables。

我创build了一个Dockerfile来生成OpenSuse 42.3的映像。 我需要在图像中设置一些环境variables,以便任何从图像启动容器的人都可以使用我编译并放置在图像中的代码。

我创build了一个名为“image_env_setup.sh”的shell文件,其中包含必要的环境variables定义。 我也手动将这些环境variables定义添加到Dockerfile。

USER codeUser COPY ./docker/image_env_setup.sh /opt/MyCode ENV PATH="$PATH":"/opt/MyCode/bin:/usr/lib64/mpi/gcc/openmpi/bin" ENV LD_LIBRARY_PATH="/usr/lib64:/opt/MyCode/lib:" ENV PS1="[\u@docker: \w]\$ " ENV TERM="xterm-256color" ENV GREP_OPTIONS="--color=auto" ENV EDITOR=/usr/bin/vim USER root RUN chmod +x /opt/MyCode/image_env_setup.sh USER codeUser RUN /opt/MyCode/image_env_setup.sh RUN /bin/bash -c "source /opt/MyCode/image_env_setup.sh" 

我用来创build容器的命令是:

 docker run -it -d --name ${containerName} -u $userID:$groupID \ -e USER=$USER --workdir="/home/codeUser" \ --volume="${home}:/home/codeUser" ${imageName} /bin/bash \ 

唯一可行的是在容器启动时通过shell文件再次运行。

 docker start $MyImageTag docker exec -it $MyImageTag /bin/bash --rcfile /opt/MyCode/image_env_setup.sh 

我不认为在容器中设置shellvariables是很困难的,所以任何进入它的入口都会为用户提供已经定义好的variables。

RUN条目不能修改环境variables(我假设你想在image_env_setup.sh设置更多的variables)。 Dockerfile中只有ENV条目(和–rc文件等--rcfile选项可以改变环境)。

当然,您也可以决定从.bashrc

例如,你可以预先制作一个.bashrc ,然后用COPY把它拉出来,或者做

 RUN echo '. /opt/MyCode/image_env_setup.sh' >> ~/.bashrc 

你可以把/opt/MyCode/image_env_setup.sh放在/opt/MyCode/image_env_setup.sh的〜/ .bash_profile或〜/ .bashrc中,这样每次你进入容器时你都有env的设置