我在Docker创建一个没有设置环境变量的容器时遇到了麻烦,我知道我在图像定义中设置了该容器.
我创建了一个生成OpenSuse 42.3图像的Dockerfile.我需要在图像中设置一些环境变量,以便从图像中启动容器的任何人都可以使用我编译并放置在图像中的代码.
我创建了一个名为"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="[\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"
Run Code Online (Sandbox Code Playgroud)
我用来创建容器的命令是:
docker run -it -d --name ${containerName} -u $userID:$groupID \
-e USER=$USER --workdir="/home/codeUser" \
--volume="${home}:/home/codeUser" ${imageName} /bin/bash \
Run Code Online (Sandbox Code Playgroud)
唯一有效的方法是在容器启动时传递shell文件以便再次运行.
docker start $MyImageTag
docker exec -it $MyImageTag /bin/bash --rcfile /opt/MyCode/image_env_setup.sh
Run Code Online (Sandbox Code Playgroud)
我认为在容器中设置shell变量并不困难,因此任何进入它的条目都会为用户提供已定义的shell变量.
RUN条目无法修改环境变量(我假设您要设置更多变量image_env_setup.sh).只有ENVDockerfile中的条目(和docker选项等--rcfile可以改变环境).
您也可以决定采购image_env_setup.sh从.bashrc,当然.
例如,您可以预先制作a .bashrc并将其拉入COPY,或者执行
RUN echo '. /opt/MyCode/image_env_setup.sh' >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6904 次 |
| 最近记录: |