Docker continuum / miniconda3容器不显示“conda”

我有一个Docker容器,运行带有Django项目的continuum / miniconda3镜像,成功地运行到localhost:8000,我可以看到我的项目在浏览器中运行。 该容器是使用以下Dockerfile构build的

FROM continuumio/miniconda3 ENV PYTHONUNBUFFERED 1 RUN mkdir /pft WORKDIR /pft RUN rm /bin/sh && ln -s /bin/bash /bin/sh RUN apt-get update && apt-get install -y && \ apt-get install build-essential libssl-dev -y && \ rm -rf /var/lib/apt/lists/* RUN conda create --name pft python=3 RUN source activate pft RUN pip install 'django==1.10.5' 

但是,当我尝试运行运行terminal中的“conda”命令时使用以下命令:

 docker exec -it my_running_container /bin/bash 

我收到此错误消息:

 root@ad9621c5e9bd:/pft# conda bash: conda: command not found 

还有什么令人困惑的是,在Dockerfile官方的图片使用可以在这里findhttps://hub.docker.com/r/continuumio/miniconda3/~/dockerfile/

使用以下命令构build映像,而我没有看到/etc/profile.d/conda.sh或/ opt / conda。

 RUN echo 'export PATH=/opt/conda/bin:$PATH' > /etc/profile.d/conda.sh && \ wget --quiet https://repo.continuum.io/miniconda/Miniconda3-4.3.14-Linux-x86_64.sh -O ~/miniconda.sh && \ /bin/bash ~/miniconda.sh -b -p /opt/conda && \ rm ~/miniconda.sh 

我确定我正在附加正确的容器,因为我可以在容器中看到装入的容器,而对于两个容器,我可以看到只有一个正在运行的容器:

 docker container ls -a 

更新:

我正在使用docker-compose.yml文件从Dockerfile构build容器。 我不一定相信,构成的容器就是我所想的那个容器。 当我使用:

 docker-compose up 

它说:

 creating some_container Attaching to some_container 

这是我想要附加的服务。 我正在试着附加:

 docker-compose exec -it web bash 

以下是我的docker-compose.yml文件。

  version: "3" services: web: build: ./config/src command: python manage.py runserver 0.0.0.0:8000 volumes: - ./src:/pft ports: - "8000:8000" 

如果我运行基于Dockerfile的图像的容器,通过:

 docker run -it some_docker_image 

我尝试通过以下方式附加到它:

 docker exec -it my_running_container /bin/bash 

当我更改命令在docker-compose文件中运行

 command: python manage.py runserver 0.0.0.0:8000 

至:

 command: source activate pft && python manage.py runserver 0.0.0.0:8000 

我得到了以下错误与docker组成。

 ERROR: for web Cannot start service web: oci runtime error: container_linux.go:247: starting container process caused "exec: \"source\": executable file not found in $PATH" 

奇怪的是,如果我手动构build一个图像,并使用我的Dockerfile“泊坞窗运行”基于该图像的容器,它会按预期工作。 当我查找图片时,docker-compose从Dockerfile自动创build,并尝试从图片中“docker run”一个容器,它给出了上面提到的错误。 为什么这个图像不同于使用手动“docker build”命令创build的图像?

我发现了这个问题。 当你使用docker-compose up,并且你已经改变了docker-compose文件用来构build服务和容器的Dockerfile中的任何东西时,你需要使用:

 docker-compose up --build 

因为docker-compose将使用之前构build的图像。 之后,重新构build图像我现在可以附加到正在运行的容器,并且一切都按预期工作。