首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker continuum/miniconda3容器未显示"conda“

Docker continuum/miniconda3容器未显示"conda“
EN

Stack Overflow用户
提问于 2017-06-09 01:34:40
回答 1查看 1.3K关注 0票数 1

我有一个运行continuum/miniconda3镜像的Docker容器和一个成功服务于localhost:8000的Django项目,并且我可以在浏览器中看到我的项目正在运行。容器是用以下Dockerfile构建的

代码语言:javascript
复制
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'

但是,当我尝试在运行的终端中使用以下命令运行"conda“命令时:

代码语言:javascript
复制
docker exec -it my_running_container /bin/bash

我收到以下错误消息:

代码语言:javascript
复制
root@ad9621c5e9bd:/pft# conda
bash: conda: command not found

另外令人困惑的是,在Dockerfile文件中,官方镜像使用的是https://hub.docker.com/r/continuumio/miniconda3/~/dockerfile/

镜像是使用以下命令构建的,我看不到/etc/profile.d/conda.sh或/opt/conda。

代码语言:javascript
复制
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

我确信我连接到一个容器是正确的,因为我可以看到容器中已安装的卷,而对于两个容器,当我使用以下命令时,我可以看到只有一个运行的容器:

代码语言:javascript
复制
docker container ls -a

更新:

我使用的是docker-compose.yml文件,它从Dockerfile构建容器。我不一定相信compose创建的容器是我想的那样。当我使用:

代码语言:javascript
复制
docker-compose up

上面写着:

代码语言:javascript
复制
creating some_container
Attaching to some_container

这是我尝试附加的服务。我正在尝试附加以下内容:

代码语言:javascript
复制
docker-compose exec -it web bash

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

代码语言:javascript
复制
 version: "3"
 services:

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

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

代码语言:javascript
复制
docker run -it some_docker_image

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

代码语言:javascript
复制
docker exec -it my_running_container /bin/bash

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

代码语言:javascript
复制
command: python manage.py runserver 0.0.0.0:8000

至:

代码语言:javascript
复制
command: source activate pft && python manage.py runserver 0.0.0.0:8000

我用docker-compose up得到以下错误。

代码语言:javascript
复制
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"

奇怪的是,如果我手动构建一个镜像,并使用Dockerfile基于该镜像"docker运行“一个容器,它就能正常工作。当我查找从Dockerfile自动创建的镜像docker-compose,并尝试从镜像中"docker run“一个容器时,它给出了上面提到的错误。为什么这个镜像与手动"docker build“命令创建的镜像不同?

EN

回答 1

Stack Overflow用户

发布于 2017-06-09 04:22:23

我找到问题了。当您使用docker-compose up,并且更改了docker-compose文件中用于构建服务和容器的Dockerfile中的任何内容时,您将需要使用:

代码语言:javascript
复制
docker-compose up --build 

因为docker-compose将使用之前构建的映像。之后,重新构建镜像,我现在可以附加到正在运行的容器,一切都如预期的那样工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44442228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档