我在创建没有设置环境变量的容器时遇到了问题,我知道在图像定义中设置了该容器。在Docker中设置环境变量
我已经创建了一个Dockerfile来生成OpenSuse 42.3的映像。我需要在图像中设置一些环境变量,以便任何从图像启动容器的人都可以使用我编译并放置在图像中的代码。
我创建了一个名为“image_env_setup.sh”的shell文件,其中包含必要的环境变量定义。我还手动将这些环境变量定义添加到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="[\[email protected]: \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变量会很困难,因此任何进入它的条目都会为用户提供已定义的内容。
'alias'是一个外壳命令;它与'ENV'修改的环境无关。 – chepner
谢谢@chepner。我编辑了它。对我来说最重要的部分是正确设置PATH和LD_LIBRARY_PATH环境变量。其他东西只是用户在进入容器时看到的显示内容的美学内容。 – wandadars