docker - 输入新的Docker镜像时返回空PATH

标签 docker

我已经写了一个Dockerfile来构建一个docker镜像:

#author russell jarvis rjjarvis@asu.edu

#start from the serial version of ubuntu NEURON+Python as if its a module
# add mpi support


#NEURON Dockerfile
#Docker comments must be of this form.
# This is the syntax for a directive. Don’t get confused
#Set the base image to pyneuron-toolbox


FROM russelljarvis/pyneuron-toolbox
RUN echo $PATH


WORKDIR $HOME
RUN sudo /opt/conda/bin/conda install -y mpi4py ipython
RUN echo $PATH


WORKDIR /home/docker

RUN \
   sudo wget https://www.open-mpi.org/software/ompi/v2.0/downloads/openmpi-2.0.0.tar.gz && \
   sudo tar -xzf openmpi-2.0.0.tar.gz && \
   sudo rm openmpi-2.0.0.tar.gz
RUN echo $PATH

WORKDIR /home/docker/openmpi-2.0.0


RUN \
  sudo ./configure && \
  sudo make all && \
  sudo make install

RUN echo $PATH

#Download  maven, and its java dependencies

WORKDIR $HOME/git
RUN sudo apt-get -y install default-jre default-jdk maven

RUN echo $PATH


WORKDIR /home/docker/neuron/nrn-7.4



RUN sudo ./configure --prefix=`pwd` --without-iv --with-nrnpython=/opt/conda/bin/python --with-paranrn=/usr/bin/mpiexec
RUN sudo make all && \
   sudo make install

RUN echo $PATH

WORKDIR src/nrnpython
RUN sudo /opt/conda/bin/python3.4 setup.py install

RUN echo $PATH
RUN echo "its chowning the USER directory that seems to break path" 
#RUN sudo chown -R docker $HOME
RUN echo $PATH
WORKDIR /home/docker/git
#RUN git clone https://github.com/NeuroML/jNeuroML
RUN git clone https://github.com/russelljjarvis/jNeuroML.git
WORKDIR jNeuroML
RUN sudo /opt/conda/bin/python getNeuroML.py
ENV ADDITIONAL_PATH="/neuron/nrn-7.4/x86_64/bin"
CMD export PATH=$PATH:$ADDITIONAL_PATH; /bin/echo -e "ADDITIONAL_PATH is $ADDITIONAL_PATH\nPATH is $PATH"
RUN echo $PATH
RUN echo $ADDITIONAL_PATH

#WORKDIR /home/docker/git
#RUN git clone

我用Dockerfile指定了镜像
$docker build .

我找到最新版本的IMAGE ID,并使用以下命令输入:
$docker run -it d10bd1b2c2bb /bin/bash

但是,当我输入docker镜像时,我发现环境变量PATH的内容为空。

最后的命令是:
ENV ADDITIONAL_PATH="/neuron/nrn-7.4/x86_64/bin"  
CMD export PATH=$PATH:$ADDITIONAL_PATH; /bin/echo -e "ADDITIONAL_PATH is $ADDITIONAL_PATH\nPATH is $PATH"
RUN echo $PATH  
RUN echo $ADDITIONAL_PATH
RUN echo语句的输出是适当的。在构建镜像的过程中,docker环境变量看起来不错,但是,仅当我输入docker镜像时,才会出现问题。

如果省略了这些最终的Docker命令,那么当我进入新创建的镜像时,PATH变量仍然是一个空字符串。

我想知道是否有人知道出了什么问题?

感谢您的任何建议。

最佳答案

仅以下形式的语句:
ENV路径/ opt / conda / bin / conda:/ opt / conda / bin / python:$ PATH
应该用于设置环境变量。
然后可以使用以下命令检查path变量:
运行echo $ PATH
在构建期间,但是命令如
conda和python可能无法在构建过程中按预期运行,但是当您输入docker镜像时,PATH变量将正确更新。

关于docker - 输入新的Docker镜像时返回空PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39627692/

相关文章:

windows - 将 MongoDB 与 Docker 卷一起使用时,数据不会保存在数据库中吗?

docker - 在 docker 容器内使用 create-react-app 运行开发服务器

MySql使用Makefile创建数据库

bash - 停止运行了一定时间的 Docker 容器

php - 为什么我的Dockerfile不执行命令

docker - 如何在Docker中创建数据量?

node.js - 如何从在 AWS ecs 上使用 docker 部署的应用程序获取日志

docker - Docker Swarm 1.12 的 DNS 故障转移

docker - 如何通过简单地从头开始在容器中设置随机 UID 来创建非 root 用户?

docker - 为什么docker -itd使容器运行而docker -d使容器退出