我在Docker创建一个容器时遇到了麻烦,该容器没有设置我在映像定义中设置的环境变量。
我创建了一个Dockerfile,该文件生成OpenSuse 42.3的映像。我需要在映像中设置一些环境变量,以便从映像启动容器的任何人都可以使用我编译并放置在映像中的代码。
我创建了一个名为“ image_env_setup.sh”的外壳文件,其中包含必要的环境变量定义。我还手动将这些环境变量定义添加到了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"
我用来创建容器的命令是:
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
我不认为仅在容器中设置shell变量就不会那么困难,以便向其中的任何条目都可以为用户提供已经定义的变量。
RUN
条目不能修改环境变量(我假设您要在中设置更多变量image_env_setup.sh
)。仅ENV
Dockerfile中的条目(以及类似docker选项的对象--rcfile
可以更改环境)。
您也可以决定源image_env_setup.sh
从.bashrc
,当然。
例如,您可以预制a.bashrc
并使用进行拉入COPY
,或者执行
RUN echo '. /opt/MyCode/image_env_setup.sh' >> ~/.bashrc
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句