Docker容器不会反映机器以外的更改

所以我有一个Dockerfile,使用它创build一个图像。 Dockerfile中的指令是:

#This is a docker file FROM ubuntu:14.04 MAINTAINER amit # Install python-pip RUN apt-get update && apt-get install -y python-pip # Install virtual-env RUN mkdir ~/.virtualenvs RUN pip install virtualenv RUN pip install virtualenvwrapper RUN touch ~/.bashrc RUN echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc RUN echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc RUN /bin/bash -c "source /usr/local/bin/virtualenvwrapper.sh && mkvirtualenv be" # INSTALL REQUIRED PACKAGES RUN apt-get update && apt-get install -y \ xclip \ python-dev \ libffi-dev \ libpam0g-dev \ sqlite3 \ libsqlite3-dev \ subversion \ g++ \ libxslt1-dev \ libxml2-dev \ zlib1g-dev \ swig \ node \ git \ libssl-dev # Expose port EXPOSE 5000 # Get the source ideally one should do a get on source release COPY src /src WORKDIR /src RUN touch installer.sh RUN echo "#!/bin/bash" >> installer.sh RUN echo "source `which virtualenvwrapper.sh`" >> installer.sh RUN echo "workon be" >> installer.sh RUN echo "./tools/install_dependencies" >> installer.sh RUN echo "deactivate be" >> installer.sh RUN chmod +x installer.sh 

现在我从这里build立一个图像。 我通过运行docker容器执行installer.sh,一切正常。

但是当有人从存储库中取出这个图像,并运行文件installer.sh时,出现错误,说明virtualenv不存在,然后必须再次执行“mkvirtualenv”。 这里有什么问题? “virtualenv”不应该自动出现在容器中吗?